У меня многомерный массив, вот небольшой отрывок:
Array ( [Albums] => Array ( [A Great Big World - Is There Anybody Out There] => Array(...), [ATB - Contact] => Array(...), ) [Pop] => Array (...) )
И у меня есть динамический путь:
/albums/a_great_big_world_-_is_there_anybody_out_there
Какой был бы лучший способ получить значение (в этом примере) $arr["albums"]["A Great Big World - Is There Anybody Out There"]
?
Обратите внимание, что он должен быть динамическим, так как в этом примере вложенность может идти глубже, чем 2 уровня.
РЕДАКТИРОВАТЬ
Вот функция, которую я использую для создания простой строки для URL:
function formatURL($url) { return preg_replace('/__+/', '_', preg_replace('/[^a-z0-9_\s-]/', "", strtolower(str_replace(" ", "_", $url)))); }
$array = array(...); $path = '/albums/a_great_big_world_-_is_there_anybody_out_there'; $value = $array; foreach (explode('/', trim($path, '/')) as $key) { if (isset($value[$key]) && is_array($value[$key])) { $value = $value[$key]; } else { throw new Exception("Path $path is invalid"); } } echo $value;