Доступ к многомерному массиву через строку с разделителем - PullRequest
2 голосов
/ 22 сентября 2011

предположим, у меня есть многомерный массив, похожий на этот:

<?php

$array = array("test1" => array("test2" => array("test3" => 1)), ... foo1 = array("foo2" => 2));

?>

Я хочу получить доступ к элементу массива, передав строку типа "test1.test2.test3" в функцию, которая, в свою очередь, вызывает элемент массива. Я мог бы использовать eval(), заменив строку на [] (вызывая $array["test2]["test3"] ...), но мне интересно, есть ли другой, более надежный подход к вызову элемента массива без обхода всей его глубины или использования eval().

1 Ответ

2 голосов
/ 22 сентября 2011

Вы можете использовать

function get_multi($arr, $str) {
    foreach (explode('.', $str) as $key) {
        if (!array_key_exists($arr, $key)) {
            return NULL; 
        }
        $arr = $arr[$key];
    }

    return $arr;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...