получать значения массива с помощью ключевого пути рекурсивной функции php

У меня небольшая проблема. Вот мой массив:

$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. Я знаю все ключи до массива с именем «Марк», мне нужна рекурсивная функция, чтобы получить этот эквивалент массива с этим: $ data ['properties'] [0] ['properties] [1] [properties] [0] , Пожалуйста, помогите мне!!!

Я бы использовал ссылки вместо рекурсии, но, возможно, кто-то ответит рекурсивной функцией. Если вы знаете ключ 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); 

И рекурсивная функция для этой ситуации by @blckwngd, но мне нравится решение @ AbraCadaver:

 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); }