【发布时间】:2013-02-16 13:03:00
【问题描述】:
PHP 的ArrayIterator 和ArrayObject 的构造函数有一个flags 参数,该参数记录在ArrayObject::setFlags() 中,如下所示:
ArrayObject::STD_PROP_LIST当作为列表(var_dump、foreach 等)访问时,对象的属性具有其正常功能。
ArrayObject::ARRAY_AS_PROPS条目可以作为属性访问(读取和写入)。
ArrayIterator::setFlags() 的文档类似(the difference being difference erroneous)。
现在,我非常了解第二个标志,它允许使用-> 进行属性访问以及使用[] 进行数组访问:
$a = new ArrayIterator(array('foo'=>1), ArrayObject::ARRAY_AS_PROPS);
var_dump($a['foo']);
var_dump($a->foo);
int(1)
int(1)
但我无法理解ArrayObject::STD_PROP_LIST。据我测试,var_dump 和 foreach 在有或没有这个标志的情况下表现完全一样。我在这里错过了什么?
【问题讨论】:
标签: php spl arrayobject arrayiterator