Задать вопрос
The_Lars
@The_Lars

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

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


Очевидно, что данный способ не работает, но как можно реализовать нечто подобное?
  • Вопрос задан
  • 67 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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
Разработчик
Впервые с таким сталкиваюсь, но очень нужно.


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

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

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

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