array van PHP-objecten

Dus ik heb een tijdje gezocht en kan het antwoord op een eenvoudige vraag niet vinden. Is het mogelijk om een ​​scala aan objecten in PHP te hebben? Zoals:

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

Om de een of andere reden heb ik het antwoord overal niet kunnen vinden. Ik neem aan dat het mogelijk is, maar ik moet gewoon zeker weten.


Antwoord 1, Autoriteit 100%

De beste plaats om antwoorden op generaal (en enigszins eenvoudige vragen) te vinden, zoals dit is om te lezen op PHP DOCS . Specifiek in uw geval kunt u meer lezen op objecten . Je kunt stdobject en geïnsecteerde objecten binnen een array opslaan. In feite is er een proces dat bekend staat als ‘hydratatie ‘die de ledenvariabelen van een object met waarden uit een database-rij bevolkt, wordt het object opgeslagen in een array (mogelijk met andere objecten) en teruggekeerd naar de roepcode voor toegang.

– bewerken –

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

Antwoord 2, Autoriteit 25%

Ja.

$array[] = new stdClass;
$array[] = new stdClass;
print_r($array);

Resultaten in:

Array
(
    [0] => stdClass Object
        (
        )
    [1] => stdClass Object
        (
        )
)

Antwoord 3, Autoriteit 9%

Ja, het is mogelijk om een ​​reeks objecten in PHP te hebben.

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

Antwoord 4, Autoriteit 6%

Arrays kunnen pointers vasthouden, dus als ik een reeks objecten wil, doe ik dat.

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

Hierdoor wordt aangegeven dat het object wordt verwezen en toegankelijk via de array.


Antwoord 5

Een andere intuïtieve oplossing zou kunnen zijn:

class Post
{
    public $title;
    public $date;
}
$posts = array();
$posts[0] = new Post();
$posts[0]->title = 'post sample 1';
$posts[0]->date = '1/1/2021';
$posts[1] = new Post();
$posts[1]->title = 'post sample 2';
$posts[1]->date = '2/2/2021';
foreach ($posts as $post) {
  echo 'Post Title:' . $post->title . ' Post Date:' . $post->date . "\n";
}

Antwoord 6

Hoewel alle gegeven antwoorden correct zijn, beantwoorden ze in feite niet volledig de vraag die over het gebruik van het [] -construct en meer in het algemeen de array met objecten vullen.

Er is een meer relevant antwoord te vinden in
hoe arrays van objecten te bouwen in PHP zonder een indexnummer op te geven?
die duidelijk laat zien hoe het probleem kan worden opgelost.

Other episodes