我想在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
答案 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;