如何找到隐藏在多维数组中某个键的某个键的值?

时间:2014-02-19 14:16:09

标签: php arrays

我想在PHP中编写一个方法,它迭代一个可能的多维数组,并返回键“user_id”的值,该键可以在该数组中的任何位置。 如果找不到,我猜“假”将是一个正确的输出。

我的拳头托盘是一个array_walk_recursive($ myarray,'searchUserId'),但是我想知道如何将这个值从回调方法返回到我的方法,该方法应返回找到的值。

这是我到目前为止所尝试的:

示例数组:

$myarray = array('id'   => 6,
    'foo'  => 7,
    'User' => array(
        'id'   => 1,
        'baa' => 'kiki',
    ),
    'Baz' => array(
        'user_id' => 1,
        'foo'    => 'kiki',
    ));

首先尝试解决方案:

function searchUserId($value, $key)
{
    if ($key == 'user_id')
        echo "$value\n<br>";
}

array_walk_recursive($myarray, 'searchUserId');a

此回叫发现密钥和ecos的值正确。但我不希望它回应我想要以某种方式回馈给我作为单一结果。

一如既往地感谢任何帮助和提示!

Calamity Jane

2 个答案:

答案 0 :(得分:1)

通过引用传入变量,允许我们改变它。

$strReturn = "";
array_walk_recursive($myarray, function($element, $key) use(&$strReturn) {
   if($key === 'user_id') {  // strict comparison will ensure no accident `0` key matches
       $strReturn = $element;
   }
});
echo $strReturn;

例如

如果我有以下数组;

Array
(
    [location] => y
    [animal] => zebra
    [user_info] => Array
        (
            [user_id] => 1
        )

)

$strReturn的值为1

答案 1 :(得分:1)

你快到了。通过引用将其传递给用户变量,然后访问该值: (我将user_id更改为更加可区分的内容,因此我知道它工作正常。)

$myarray = array('id'   => 6,
    'foo'  => 7,
    'User' => array(
        'id'   => 1,
        'baa' => 'kiki',
    ),
    'Baz' => array(
        'user_id' => 199,
        'foo'    => 'kiki',
    ));

function searchUserId($value, $key, &$myvar)
{
    if ($key == 'user_id')
        $myvar= "$value\n<br>";
}

array_walk_recursive($myarray, 'searchUserId',&$myvar);
echo $myvar;