我有点问题。这是我的阵列:
$data = array(
'properties'=>array{
[0]=>
array {
["name"]=>"prop1",
["properties"]=>
array {
[0]=>
array(5) {
["name"]=>"sub_prop1"
}
[1]=>
array(6) {
["name"]=>"sub_prop2",
["properties"]=>
array(2) {
[0]=>
array(6) {
["name"]=>"MARK"
}
}
}
}
},
[1]=>
array {
["name"]=>"prop2"
}
}
);
阵列路径为:0/1/0。 我知道所有的键直到名为“Mark”的数组,我需要一个递归函数来得到这个数组等价于:$ data ['properties'] [0] ['properties] [1] [properties] [0] 。请帮帮我!!!
答案 0 :(得分:1)
我会使用引用而不是递归,但也许有人会用递归函数来回答。如果您知道name
密钥,则将其放入路径中。如果没有,则reset
将获得第一项:
$path = array('properties', 0, 'properties', 1, 'properties', 0);
$result =& $data;
foreach($path as $key) {
$result =& $result[$key];
}
echo reset($result);
// or if you want array('name' => 'MARK')
print_r($result);
答案 1 :(得分:1)
我也找到了这个解决方案:
function get_array_by_key_path($data, $key_path){
if(count($key_path) == 0){
return $data;
}
$key = array_shift($path_keys);
// and recursion now
return get_array_by_key_path($data['properties'][$key], $keys);
}