array_walk_recursive返回值

时间:2011-01-25 08:32:05

标签: php arrays

我正在使用带有回调函数的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";

所有找到的元素都很好。

如何从回调函数返回或存储找到的元素?

1 个答案:

答案 0 :(得分:4)

如果$key将对应于您遍历的嵌套数组中的多个值,则$item_arrays应该拥有该键的自己的数组。否则,你所做的一切就是用所有来的值覆盖self::$items_array[$key]

试试这个:

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