variable variables и массивы
Мне непонятно поведение PHP при работе с переменными переменными для доступа к элементам массива.
Правильно работающий код:
показывает, что ${$a}['bcd'] содержит "some value".
Код
сообщает, что не определена переменная x (хотя $a =="xxx", а не "x")
PHP берет только первый символ из строкового значения переменной $a и ищет такую перменную.
Например:
видим, что значением $$a['bcd'] является содержимое массива $x, a не элемента $x['bcd'].
Теперь, если вместо 'bcd' поставить число, PHP выдаст сообщение, что элемент не найден. Но любая строка просто игнорируется и возвращается не значение элемента, а весь массив.
Нормально:
Указание элемента игнирируется:
Платформа:
Linux 7.3, Apache 1,3.27 PHP 4.3.2
Может, я что-то не учел, и это фича?
Мне непонятно поведение PHP при работе с переменными переменными для доступа к элементам массива.
Правильно работающий код:
PHP:
$xxx = array("bcd"=>"some value");
$a = "xxx";
var_dump (${$a}['bcd']);
Код
PHP:
$xxx = array("bcd"=>"some value");
$a = "xxx";
var_dump ($$a['bcd']);
PHP берет только первый символ из строкового значения переменной $a и ищет такую перменную.
Например:
PHP:
$x = array("bcd"=>"some value");
$a = "x";
var_dump ($$a['bcd']);
Теперь, если вместо 'bcd' поставить число, PHP выдаст сообщение, что элемент не найден. Но любая строка просто игнорируется и возвращается не значение элемента, а весь массив.
Нормально:
PHP:
$x = array("bcd"=>"some value");
$a = "x";
var_dump ($$a[1]);
PHP:
$x = array("bcd"=>"some value");
$a = "x";
var_dump ($$a["any string"]);
Linux 7.3, Apache 1,3.27 PHP 4.3.2
Может, я что-то не учел, и это фича?