72 votes

Tableau d'objets PHP

J'ai cherché pendant un certain temps et je ne trouve pas la réponse à une question simple. Est-il possible d'avoir un tableau d'objets en PHP ? Par exemple :

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

Pour une raison quelconque, je n'ai pu trouver la réponse nulle part. Je suppose que c'est possible, mais j'ai besoin de m'en assurer.

125voto

Mike Purcell Points 12082

Le meilleur endroit pour trouver des réponses à des questions générales (et un peu faciles) comme celle-ci est de se renseigner sur les sujets suivants Documents PHP . Dans votre cas précis, vous pouvez en savoir plus à l'adresse suivante objets . Vous pouvez stocker des stdObjects et des objets instanciés dans un tableau. En fait, il existe un processus connu sous le nom de ' 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 appelant pour qu'il puisse y accéder.

-- Editer --

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";
}

28voto

ceejayoz Points 85962

Oui.

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

print_r($array);

Résultats dans :

Array
(
    [0] => stdClass Object
        (
        )

    [1] => stdClass Object
        (
        )

)

9voto

rizon Points 2751

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>";

7voto

Langel Points 315

Les tableaux peuvent contenir des pointeurs, donc 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 par le biais du tableau.

4voto

Kamika Points 328

Vous pouvez faire quelque chose comme ça :

$posts = array(
  (object) [
    'title' => 'title 1',
    'color' => 'green'
  ],
  (object) [
    'title' => 'title 2',
    'color' => 'yellow'
   ],
   (object) [
     'title' => 'title 3',
     'color' => 'red'
   ]
);

Résultat :

var_dump($posts);

array(3) {
  [0]=>
  object(stdClass)#1 (2) {
    ["title"]=>
    string(7) "title 1"
    ["color"]=>
    string(5) "green"
  }
  [1]=>
  object(stdClass)#2 (2) {
    ["title"]=>
    string(7) "title 2"
    ["color"]=>
    string(6) "yellow"
  }
  [2]=>
  object(stdClass)#3 (2) {
    ["title"]=>
    string(7) "title 3"
    ["color"]=>
    string(3) "red"
  }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X