Я пытаюсь получить элемент из многомерного массива через строку, которая описывает путь в массив (например, first.second.third
).Почему при попытке разрешить многомерный массив возникает ошибка «Неопределенная переменная»?
Я выбрал подход, как показано здесь (also available on ideone):
<?php
// The path into the array
$GET_VARIABLE = "a.b.c";
// Some example data
$GLOBALS["a"]= array("b"=>array("c"=>"foo"));
// Construct an accessor into the array
$variablePath = explode(".", $GET_VARIABLE);
$accessor = implode("' ][ '", $variablePath);
$variable = "\$GLOBALS[ '". $accessor . "' ]";
// Print the value for debugging purposes (this works fine)
echo $GLOBALS["a"]["b"]["c"] . "\n";
// Try to evaluate the accessor (this will fail)
echo $$variable;
?>
Когда я запускаю сценарий, он будет печатать две строки:
foo
PHP Notice: Undefined variable: $GLOBALS[ 'a' ][ 'b' ][ 'c' ] in ...
Итак, почему же это не оценить должным образом?
"[" не нужен побег символ? – VeNoMiS
@VeNoMiS: Если я убегу от него с обратной косой чертой, эта обратная косая черта также появится в сообщении об ошибке. Так что, я думаю, нет. –
Я имею в виду \\ [btw я пробовал: P – VeNoMiS