2011-12-23 80 views
39

所以我一直在寻找一段时间,找不到一个简单问题的答案。是否有可能在PHP中有一个对象数组?如:PHP对象数组

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

由于某种原因,我一直无法在任何地方找到答案。我认为这是可能的,但我只需要确定。

+4

是的,这是可能的。 – Indranil 2011-12-23 04:19:07

回答

72

找到答案一般(和有些简单的问题),如这是对PHP docs读了最好的地方。特别是在你的情况下,你可以阅读更多关于objects。您可以将stdObject和实例化的对象存储在一个数组中。实际上,有一个名为'hydration'的过程,它用来自数据库行的值填充对象的成员变量,然后该对象被存储在数组中(可能与其他对象一起)并返回到调用代码以进行访问。

- 编辑 -

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

我试过php网站,一直未能找到任何东西。我也坐在Matt Zandstra的书“PHP Objects,Patters,and Practice”一书中。并未能找到任何信息。 – Beamer180 2011-12-23 04:38:44

+0

@EricLarsen:更新后。 – 2011-12-23 04:44:27

+1

问题: 假设您只想在该阵列中仅显示一个“Car”的“颜色”。你会说'echo $ cars [0] - > color;'打印第一个,'echo $ cars [1] - > color;'打印第二个? – 2014-11-27 22:57:04

18

是的。

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

print_r($array); 

结果:

Array 
(
    [0] => stdClass Object 
     (
     ) 

    [1] => stdClass Object 
     (
     ) 

) 
+6

我计时,这需要20秒来测试,包括打字时间。 – ceejayoz 2011-12-23 04:22:10

+0

那么我的班级名称会替换stdClass?如果该对象已经创建并且您只想将其添加到数组中,该怎么办?可以用上面的方法使用构造函数吗?附:对不起,我是新来的SO – Beamer180 2011-12-23 04:33:41

+3

没有什么特别的。无论你喜欢,将它添加到数组中。这只是一个演示,您可以非常轻松地测试这些类型的东西。 – ceejayoz 2011-12-23 04:37:19

6

阵列可以容纳指针,所以当我想我这样做对象的数组。

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

这将显示该对象被引用并可通过该数组访问。

5

是的,它可能有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>"; 
+0

每次我们想要在数组中添加一个新的对象还是可选的,我们是否需要继续增加myObject()中的构造函数索引?所有这些使用网页语言的面向对象的东西都是简单的OOPS! – 2016-08-03 00:13:09

+0

@YoustayIgo就是这样的例子,所以输出区分对象。你可以在构造函数中放入任何你喜欢的值,然后简单地将该值赋给该对象的$ property属性。 – ADyson 2017-08-23 21:49:02