Вывести элемент массива

@Black#FFFFFF, в обновленном варианте есть SPL`ный ArrayIterator Для просмотра ссылки Войди или Зарегистрируйся хотя суть почти та же :)

@Горбушка, итерация (foreach и т.п.) + рекурсия в самый раз для таких задач.
Нечто похожее, но в другом формате есть у Yii2 хелпера Для просмотра ссылки Войди или Зарегистрируйся Для просмотра ссылки Войди или Зарегистрируйся
 
Вообще странно, что такой вариант не работает:
PHP:
$row['car2']['color']['code'] = 2;
$varname = "row['car2']['color']['code']";
echo $varname . '= ' . ${$varname};

Он работает :) Это возможность задать в имени переменной всякую ересь, которую парсер не пропустил бы ;)

PHP:
        $varName = "row['car2']['color']['code']";
        $$varName = "some value";

        $concatVarName = "row" . "['car2']" . "['color']" . "['code']";
        echo $$concatVarName;
 
  • Нравится
Реакции: Nei
Он работает :) Это возможность задать в имени переменной всякую ересь, которую парсер не пропустил бы ;)

PHP:
        $varName = "row['car2']['color']['code']";
        $$varName = "some value";

        $concatVarName = "row" . "['car2']" . "['color']" . "['code']";
        echo $$concatVarName;

Т.е. это разные переменные с точки зрения интерпретатора, это объясняет ошибку undefined variable. Гениально))
PHP:
$row['car2']['color']['code'] = 123;

$varName = "row['car2']['color']['code']";
$$varName = "some value";

echo $row['car2']['color']['code'] . ' != ' . $$varName ;

...новые для меня недокументированные особенности php %)

Собственно, тогда вот решение первоначальной задачи, достаточно просто изменить способ инициализации массива с данными:
PHP:
//row array key
$row = "row['car2']['color']['code']";
//row array value
$$row = 123;

$name = "['car2']['color']['code']";

echo ${"row$name"};
 
Нет, не решение...
var_dump($row);
Просто переменная получает очень кривое имя, но не становится массивом :)
 
Нет, не решение...
var_dump($row);
Просто переменная получает очень кривое имя, но не становится массивом :)

Да, не становится, но вроде ничего же не мешает всё равно её использовать, просто инициализировать так:
PHP:
//row array key
$row = "row['car2']['color']['code']";
//row array value
$$row = 123;
Для того, чтобы в цикле пройтись по всем значениям, насколько я понимаю, есть список индексов по типу "['car2']['color']['code']".
 
В общем, переделал на рекурсию - всё пашет как хотел ) Но количество рекурсий в скрипте меня уже напрягает - как оно работает я уже не понимаю. В моей голове рекурсия в рекурсии внутри функции с рекурсией уже не обрабатываются :crazy:
 
Назад
Сверху