2010-11-14 51 views
1

我有一個對象實現了IteratorAggregateArrayAccess,它在內部包含一個將在訪問時生成的數組。獲取一個對象在PHP中使用array_walk_recursive

我想在此對象上使用array_walk_recursive,但它似乎不起作用。看來這是要麼由於執行array_walk_recursive或者不可能,或者我只需要添加一個接口到我的對象。我錯過了什麼?

+0

它可以與[ArrayObject](http://www.php.net/manual/en/class.arrayobject.php)一起使用。所以你可能有幸實現Traversable和Countable。但是OTOH的大部分PHP數組函數對數組對象有點複雜。 – mario 2010-11-14 19:58:05

+0

@mario:你不能直接實現'Traversable'。它由'Iterator'或'IteratorAggregate'實現。 – NikiC 2010-11-14 20:30:31

+0

它也應該與'ArrayIterator' – Gordon 2010-11-14 22:40:31

回答

2

由於array_walk_recursive在陣列上運行,您的對象可能必須實現ArrayAccess接口。

+0

一起工作對不起,忘了提及我也實現了ArrayAccess。 – 2010-11-14 19:50:15

+2

然後它會工作,除非你的執行過程中有錯誤。 Remenber的array_walk_ **遞歸**工作您的* offsetGet *實現必須返回您的類的數組或對象。 – AndreKR 2010-11-14 19:59:38

+0

我意識到,問題是,當我有一個數組混合我的對象(嵌套)array_walk_recursive不起作用,至少與我目前的實現。 – 2010-11-15 01:17:15