2011-01-25 95 views
1

我使用array_walk_recursive有一個回調函數的嵌套數組中搜索指定的鍵:array_walk_recursive返回值

array_walk_recursive($array, array($this, 'walk_array'), $key); 

這裏是回調函數:

function walk_array($value, $key, $userdata = '') 
{ 
    if ($key === $userdata) 
    { 
     self::$items_array[$key] = $value; 
     echo $value . "<br />\n"; 
    } 
} 

的問題是,我可以沒有找到方法存儲/返回從回調函數中找到的元素,即使我使用靜態變量$items_array但它始終包含由處理的最後一項。在另一方面,如果我echo從回調函數中找到的元素:

echo $value . "<br />\n"; 

找到的所有元素呼應的罰款。

如何從回調函數中返回或存儲找到的元素?

回答

4

如果$key將與嵌套數組中的多個值相對應,那麼您的$item_arrays應該擁有自己的該數組的數組。否則,你真正在做的就是覆蓋self::$items_array[$key]與來自每個值。

試試這個:

self::$items_array[$key][] = $value; 
+0

就是這樣,感謝您的答案:) – Sarfraz 2011-01-25 09:34:22