这是我的解决方案:
function find_value_by_key($key,$array) {
$data = array('key'=>$key,'ret'=>array());
array_walk_recursive($array,function($v,$k) use (&$data) {
if ($k==$data['key'])
$data['ret'][] = $v;
},$data);
return $data['ret'];
}
如果找到了键的值(值),则返回一个数组;如果未找到键,则返回一个空数组。
如果您只需要返回它找到的第一个值,可以使用:
function find_value_by_key($key,$array) {
$data = array('key'=>$key);
array_walk_recursive($array,function($v,$k) use (&$data) {
if (isset($data['ret']))
return;
if ($k==$data['key'])
$data['ret'] = $v;
},$data);
return $data['ret']?:false;
}
返回找到的第一个值。
如果未找到键,则返回
false
。
以下是一个示例数组:
$array = array(
0 => 'A',
1 => 'B',
2 => 'C',
'foo' => 'bar',
'mykey' => 'haha',
'test' => array(
'example' => 'lol',
'mykey' => 'hoho',
),
'random' => array(
array(
'mykey' => 'hehe',
'notmykey' => 'topkek',
),
array(
'mykey' => 'huhu',
'notmykey' => 'topkek',
),
), );
第一个函数将返回
["haha","hoho","hehe","huhu"]
,第二个函数将返回
"haha"
。