web-dev-qa-db-ja.com

PHPオブジェクトの配列

だから私はしばらく探していて、簡単な質問への答えを見つけることができません。 PHPでオブジェクトの配列を持つことは可能ですか?といった:

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

何らかの理由で、私はどこでも答えを見つけることができませんでした。それは可能だと思いますが、確認する必要があります。

53
Beamer180

このような一般的な質問(やや簡単な質問)の答えを見つけるのに最適な場所は、 PHP docs を読むことです。具体的には、 objects について詳しく読むことができます。 stdObjectとインスタンス化されたオブジェクトを配列内に保存できます。実際、オブジェクトのメンバー変数にデータベース行の値を入力する「 ハイドレーション 」と呼ばれるプロセスがあり、オブジェクトは配列(おそらく他のオブジェクト)に格納され、返されますアクセスのための呼び出しコードに。

-編集-

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

はい。

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

print_r($array);

結果:

Array
(
    [0] => stdClass Object
        (
        )

    [1] => stdClass Object
        (
        )

)
24
ceejayoz

配列にはポインターを保持できるため、オブジェクトの配列が必要な場合はそれを行います。

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

これは、オブジェクトが参照されており、配列を介してアクセス可能であることを示します。

7
Langel

はい、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