2011-01-25 38 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