The_Lars
@The_Lars

Получить элемент массива по ключам записанных в переменную?

Впервые с таким сталкиваюсь, но очень нужно.
Пример:
$array = ...
$keys = [0]['group']['name'];
echo $array . $keys;
// Эквивалентно $array[0]['group']['name'];


Очевидно, что данный способ не работает, но как можно реализовать нечто подобное?
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 2
flapflapjack
@flapflapjack
на треть я прав
Дело в том, что я вижу какой-то бред))

Поток сознания и гнева, а так же размышление о смысле жизни
Впервые с таким сталкиваюсь, но очень нужно.

Не врите, не нужно.

// Эквивалентно $array[0]['group']['name'];

Ага, а баня то чего сгорела? Точка в PHP - конкатенация (соединение двух строк).
$array = ...
$keys = array(0,'group','name');
echo $array[$keys[0]][$keys[1]][$keys[2]];


Но это тоже полный бред. А всё потому что изначально вы неправильный подход делаете.

Очевидно, что самым верным решением будет определять ключи прямо при вызове echo, тобиш
$array = ...
$key1=...;/// своей логикой получаете имя ключа
$key2=...;/// своей логикой получаете имя ключа
$key3=...;/// своей логикой получаете имя ключа
echo $array[$key1][$key2][$key3];


Вы там в базе данных что ли храните ключи в этих квадратных скобках? Не могу придумать такой случай, когда вот так изгаляться надо.
Так как мне не спится, я придумал вам вот такое идиотское решение, максимально близкое к вашим хотелкам:

$array[0]['group']['name']="Foo";
$array[1]['test']['acme']="Bar";
$keys="[0]['group']['name']";
eval("echo \$array".$keys.";"); // Foo

$keys="[1]['test']['acme']";
eval("echo \$array".$keys.";"); //Bar


но это лютый позорище конечно)
Ответ написан
Комментировать
@procode
Разработчик
Впервые с таким сталкиваюсь, но очень нужно.


По-моему тут нужно переформулировать задачу.

Обьясните реальную цель - что конкретно нужно-то?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы