PHP的ArrayIterator
和ArrayObject
的構造具有在ArrayObject::setFlags()
記錄了flags
參數如下:當爲列表(的var_dump,的foreach訪問的對象的ArrayIterator和ArrayObject的flags參數有什麼作用?
ArrayObject::STD_PROP_LIST
屬性有其正常的功能等)。
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
表現完全相同,有或沒有這個標誌。我在這裏錯過了什麼?
那麼,這個標記現在是沒有意義的了?感謝您指出ArrayObject的註釋部分,我只查看了特定方法的註釋。 – 2013-02-16 13:17:08
@fab您應該親自檢查引用的代碼,以確定這是否也適用於您。 – TimWolla 2013-02-16 13:17:47
我在PHP 5.4和5.3上試了一下,得到了和你一樣的行爲。而且,「foreach」總是忽略這些屬性。 – 2013-02-16 13:20:18