могут ли значения массива быть доступны переменным переменным? - PullRequest
0 голосов
/ 21 февраля 2011

У меня есть массив, к которому я могу правильно обращаться только через переменные переменные, например:

$foo['bar'] = "pie";

$fixed_name_variable = "foo['bar']";

echo $$fixed_name_variable;

Который в theroy echo's pie.За исключением того, что он просто ничего не возвращает.Поэтому мне нужно знать, является ли этот подход реально работоспособным или мне нужно переосмыслить его.

Только что заметил.Во второй строке должен ли столбец быть в кавычках?

Ответы [ 3 ]

1 голос
/ 21 февраля 2011

Хотя я ненавижу поощрять такое поведение, вы можете использовать eval для достижения того, что вы в ограниченной степени.

$foo['bar'] = "pie";
$fixed_name_variable = "foo['bar']";

$a = eval("return $$fixed_name_variable;"); 
echo $a; //outputs "pie"
0 голосов
/ 21 февраля 2011

Нет, я не думаю, что это возможно. Единственное (очевидно) возможное - это использование индекса переменной и доступ к $foo[$bar].

Однако использование переменных переменных в любом случае обычно является очень плохой практикой - особенно потому, что они делают отладку и автоматический поиск документации / поиска переменных очень сложными. Обычно лучше их не использовать, а вместо этого использовать массив.

0 голосов
/ 21 февраля 2011

$foo[$key_var] должно сработать, если я не правильно понял ваш вопрос?

...