web-dev-qa-db-fra.com

Tableau d'objets PHP

Donc, je cherche depuis un moment et je ne trouve pas la réponse à une question simple. Est-il possible d'avoir un tableau d'objets en PHP? Tel que:

$ar=array();    
$ar[]=$Obj1    
$ar[]=$obj2

Pour une raison quelconque, je n'ai pas été en mesure de trouver la réponse nulle part. Je suppose que c'est possible, mais je dois juste m'assurer.

53
Beamer180

Le meilleur endroit pour trouver des réponses à des questions générales (et quelque peu faciles) comme celle-ci est de lire sur documentation PHP . Dans votre cas, vous pouvez en savoir plus sur objets . Vous pouvez stocker stdObject et des objets instanciés dans un tableau. En fait, il existe un processus appelé ' hydratation ' qui remplit les variables membres d'un objet avec les valeurs d'une ligne de la base de données, puis l'objet est stocké dans un tableau (éventuellement avec d'autres objets) et renvoyé au code d'appel pour l'accès.

-- Modifier --

class Car
{
    public $color;
    public $type;
}

$myCar = new Car();
$myCar->color = 'red';
$myCar->type = 'sedan';

$yourCar = new Car();
$yourCar->color = 'blue';
$yourCar->type = 'suv';

$cars = array($myCar, $yourCar);

foreach ($cars as $car) {
    echo 'This car is a ' . $car->color . ' ' . $car->type . "\n";
}
89
Mike Purcell

Oui.

$array[] = new stdClass;
$array[] = new stdClass;

print_r($array);

Résulte en:

Array
(
    [0] => stdClass Object
        (
        )

    [1] => stdClass Object
        (
        )

)
24
ceejayoz

Les tableaux peuvent contenir des pointeurs. Ainsi, lorsque je veux un tableau d'objets, je le fais.

$a = array();
$o = new Whatever_Class();
$a[] = &$o;
print_r($a);

Cela montrera que l'objet est référencé et accessible via le tableau.

7
Langel

Oui, il est possible d'avoir un tableau d'objets en PHP.

class MyObject {
  private $property;

  public function  __construct($property) {
    $this->Property = $property;
  }
}
$ListOfObjects[] = new myObject(1); 
$ListOfObjects[] = new myObject(2); 
$ListOfObjects[] = new myObject(3); 
$ListOfObjects[] = new myObject(4); 

print "<pre>";
print_r($ListOfObjects);
print "</pre>";
6
rizon