我正在使用带有回调函数的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
但它总是包含最后一项由array_walk_recursive
处理。另一方面,如果我echo
找回来自回调函数的元素:
echo $value . "<br />\n";
所有找到的元素都很好。
如何从回调函数返回或存储找到的元素?
答案 0 :(得分:4)
如果$key
将对应于您遍历的嵌套数组中的多个值,则$item_arrays
应该拥有该键的自己的数组。否则,你所做的一切就是用所有来的值覆盖self::$items_array[$key]
。
试试这个:
self::$items_array[$key][] = $value;