我有一个由许多其他数组组成的数组,它也可能由其他数组组成。它基本上就像一个导航层次结构,一个菜单链接可以是一个带有子菜单的菜单等等。
的结构$mainarray
是这样的:
'childarray1' => array(
'link' => array(
..
'mykey' => 'valueofinterest'
),
'below' => array() of childarrays
),
'childarray2' => array(
'link' => array(
..
'mykey' => 'somevalue'
)
),
'childarray3' => array(
'link' => array(
..
'mykey' => 'someothervalue'
),
'below' => array() of childarrays
)
每个childarray
可以有 2 个直接孩子keys
,'links'
并且可以选择'below'
。里面links
总是有一个key 'mykey'
,这是我需要检查的唯一键。如果子数组有['links']['mykey'] == 'valueofinterest'
,我希望返回这个元素,比如$sub = $mainarray['child1']['below']['child11']['below']['childofinterest']
.
'below'
表示子数组本身有子数组,子数组本身也可以有下面的数组(子菜单..)。
我最大的问题是我试图找到的子数组可以在任何其他子数组的'below'
密钥中,我不知道深度(它不是太深,尽管它可能会有所不同)。我试图弄乱 foreach 循环和 while 循环并将它们组合起来,我只是无法弄清楚如何获取子数组。我想这样做:
$value = 'xxx';
$sub = return_sub_menu($value);
function return_sub_menu($value) {
$array = $mainarray();
$sub = array();
// find the child array which's ['link']['mykey'] == $value;
// $sub is now something like:
// 'childarray321' => array(
// 'link' => array(
// ..
// 'mykey' => 'xxx'
// ),
// 'below' => array() of childarrays which i NEEED :)
//
// )
return $sub;
}
我试图递归地走,但不知道如何返回元素:(