PHP中按键从多维数组返回值
我需要根据键从多维数组返回一个值 基本上,我不想为循环创建2或3个,因为数组可以像无止境一样嵌套 我的数组示例PHP中按键从多维数组返回值,php,Php,我需要根据键从多维数组返回一个值 基本上,我不想为循环创建2或3个,因为数组可以像无止境一样嵌套 我的数组示例 $menu = Array ( [16] => Array ( [categories_id] => 16 [categories_name] => Recorders [parent_name] => Recorders [children]
$menu = Array
(
[16] => Array
(
[categories_id] => 16
[categories_name] => Recorders
[parent_name] => Recorders
[children] => Array
(
[23] => Array
(
[categories_id] => 23
[categories_name] => Security
[parent_name] => Recorders - Security
[children] => Array
(
[109] => Array
(
[categories_id] => 109
[categories_name] => 4CH NVR
[parent_name] => Recorders - Security - 4CH NVR
)
[110] => Array
(
[categories_id] => 110
[categories_name] => 8CH NVR
[parent_name] => Recorders - Security - 8CH NVR
)
我找到了另一个几乎有效的解决方案:
function findParentNameFromCategory($obj, $search)
{
if (!is_array($obj) && !$obj instanceof Traversable) return;
foreach ($obj as $key => $value) {
if ($key == $search) {
return $value['parent_name'];
} else {
return findParentNameFromCategory($value, $search);
}
}
}
问题是它只是回显了值。我需要将该值分配给一个变量。如果我将echo更改为return,则根本没有得到任何值
$test = findParentNameFromCategory($menu, 109);
当我回显$test时,我在您的修复中根本没有任何值您忘记了
else
案例。因此,还应返回递归调用的值:
array_walk_recursive($obj, function(&$v, $k){
if($k == $search)
return $v['parent_name'];
});
function findParentNameFromCategory($obj, $search)
{
if (!is_array($obj) && !$obj instanceof Traversable) return;
foreach ($obj as $key => $value) {
if ($key == $search) {
$return = $value['parent_name'];
} else {
$return = findParentNameFromCategory($value, $search);
}
if ($return !== null) {
return $return;
}
}
}
您需要在递归调用链中返回“up”值,请参阅参考副本以获取解释和示例。我尝试了这一点,并更改了示例,但仍然没有得到返回值:'(