Как обратиться к элементу массива?

4m@t!c

Александр
Как обратиться к элементу массива?

пробую так
PHP:
<?php
$x = 1;
$ar = array(1,2,3,4,5);
$a = &$ar;
$tmp ='a[\''.$x.'\']';
var_dump($a);
echo '<BR>$tmp = '.$tmp;
echo '<BR>$$tmp = '.${$tmp};
?>
Результат работы скрипта
array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) }
$tmp = a['1']
Notice: Undefined variable: a['1'] in e:\apache\www\tmppage\test.php on line 8
$$tmp =
Подскажите. пожалуйста, где я туплю и чего не понял?
 

chebhero

Новичок
Вот так попробуй:

$var='<?php echo $a[$x]';
eval($var);

Должно работать.
 

4m@t!c

Александр
Это и ежу понятно, что так работать будет. я не могу понять, почему такие конструкции не работают?

-~{}~ 01.04.05 12:02:

Я понимаю, что пример высосан из пальца - поэтому и написал в Оффтопик.. Я просто хочу понять...
 

Panchous

Павел
PHP:
$x = 1;
$ar = array(1,2,3,4,5);
$a = &$ar;
$tmp ='a';
var_dump($a);
echo '<BR>$tmp = '.$tmp;
echo '<BR>$$tmp = '.${$tmp}[$x];
 

4m@t!c

Александр
Нашел ответ в мане
Для того чтобы использовать переменные переменные с массивами, вы должны решить проблему двусмысленности. То есть, если вы напишете $$a[1], обработчику необходимо знать, хотите ли вы использовать $a[1] в качестве переменной, либо вам нужна как переменная $$a, а затем ее индекс [1]. Синтаксис для разрешения этой двусмысленности таков: ${$a[1]} для первого случая и ${$a}[1] для второго.
 
Сверху