【发布时间】:2010-12-21 07:53:17
【问题描述】:
是否可以像我们为数组一样向标准类添加元素?
Array (
[0] => item 1
[1] => item 2
)
Stdclass (
[0] => item 1
[1] => item 2
)
与数组相比,操作对象通常更难吗?因为我们有很多数组函数可以使用等等。
【问题讨论】:
-
Stdclass 是空类,类似于 Java 中的 Object
是否可以像我们为数组一样向标准类添加元素?
Array (
[0] => item 1
[1] => item 2
)
Stdclass (
[0] => item 1
[1] => item 2
)
与数组相比,操作对象通常更难吗?因为我们有很多数组函数可以使用等等。
【问题讨论】:
当然,您可以添加新元素...
$Object = new StdClass();
$Object->item1 = 1;
$Object->item2 = 2;
如果您想将对象作为数组进行迭代,您应该使用 PHP SPL ArrayIterator 或 RecursiveArrayIterator。
您还可以使用类型转换从数组移动到对象并返回...
$array = array('item1', 'item2');
$Object = (object)$array;
var_dump($object);
$array = (array)$Object;
var_dump($array);
【讨论】:
是的,但没有数字索引。
$a = new stdclass();
$a->foo = 'item 1';
$a->bar = 'item 2';
$a->goobar = array('item1', 'item2');
var_dump($a);
如果您想要更复杂的场景,请查看ArrayAccess 和ArrayObject。
【讨论】:
【讨论】:
操纵起来并不难。我只想说 count 和 array_search 之类的东西对对象不起作用。
数组和对象都有其优点,这取决于您要实现的目标。
http://php.net 文档将说明哪些数据类型可以传递给哪些函数。
【讨论】: