Переменные переменных

202
07 февраля 2018, 14:07

У меня есть массив

$arr = array(
  0 => 100,
  1 => 200
  2 => array(
      0 => 300,
      1 => 400
    )
  )

и строка

$str = '[2][1]'

Почему не работает?

$arr{$str} //  NULL

Мне надо получить 400

Оно должно работать или нет?

Если нет, то подскажите как правильно обратиться к элементу массива через переменную.

Answer 1

По прочтению http://us3.php.net/manual/ru/language.variables.variable.php.

Похоже, что так можно манипулировать название переменной. Индексы таким образом манипулировать нельзя.

Не понятно, зачем может понадобиться такая конструкция.

По сути вы пытаетесь создать eval - функцию. У меня есть подозрение, что вашу задачу можно решить лучшим способом.

Answer 2

в laravel есть интересный метод array_get()

https://laravel.com/docs/5.5/helpers#method-array-get

в данном примере

array_get($arr, '2.1')

если заинтересует - можно сорс код посмотреть

Answer 3

Это не переменные переменные это мноомерный массив

$var = $str[2][1];
READ ALSO
webasyst не видит содержимое POST

webasyst не видит содержимое POST

В функции, ответственной за сохранение, в логах не пишет, что файл загружен, хотя все остальные данные на местеВ чем может быть дело?

174
Использование Regex в PHP

Использование Regex в PHP

Почему выражение <\shtml[^>]>(*?) работает на сайте https://regex101

120
парсеры с помощью ООП

парсеры с помощью ООП

Долгое время писал парсеры на PHP в процедурном стилеРешил теперь все переписать на ООП стиль

190
Отправляется только 5 вложенных файлов из 8

Отправляется только 5 вложенных файлов из 8

Не могу понять почему отправляется только первых 5 вложенных файлов из 8Вот код:

168