iNickolay
@iNickolay

Как обратиться к многомерному массиву с помощью строки?

Здравствуйте!
Допустим, есть строка cars/bmw
Как обратиться к массиву $items['cars']['bmw']?

Пробовал так:
$getPath = explode('/', $getPath);
$getPath = "['" . implode("']['", $getPath) . "']";
var_dump($items{$getPath});

Ругается, что нет такого индекса:
Undefined index: ['cars']['bmw']
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
$getPath = explode('/', $getPath);
$item = $items;
foreach ($getPath as $key) {
    if (!isset($item[$key])) {
        $item = null;
        break;
    }
 
    $item = $item[$key];
}

var_dump($item);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@BushaevDenis
$getPath = explode('/', $getPath);
$realPath = '';
for ($i = 0; $i < count($getPath) - 1; $i++) {
     $realPath .= $getPath[$i];
}
var_dump($items{$realPath});
Ответ написан
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Ну так разбейте строку по /
А потом по очереди залезайте вглубь массива нормальным путём.
$items[$key1][$key2][$key3]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы