Иногда бывает удобно иметь переменными имена переменных. То есть, имя переменной, которое может быть определено и изменено динамически. Обычная переменная определяется примерно таким выражением:
<?php
$a = 'hello';
?>
Переменная переменной берет значение переменной и рассматривает его как имя переменной. В вышеприведенном примере hello может быть использовано как имя переменной при помощи двух знаков доллара. То есть:
<?php
$$a = 'world';
?>
Теперь в дереве символов PHP определены и содержатся две переменные: $a, содержащая "hello", и $hello, содержащая "world". Таким образом, выражение
<?php
echo "$a ${$a}";
?>
выведет то же, что и
<?php
echo "$a $hello";
?>
то есть, они оба выведут: hello world.
Для того чтобы использовать переменные переменных с массивами, вы должны решить проблему двусмысленности. То есть, если вы напишете $$a[1], обработчику необходимо знать, хотите ли вы использовать $a[1] в качестве переменной, либо вам нужна как переменная $$a, а затем ее индекс [1]. Синтаксис для разрешения этой двусмысленности таков: ${$a[1]} для первого случая и ${$a}[1] для второго.
<html>
<head>
<title>Variable Variables</title>
</head>
<body>
<?php
$a = "hello";
$hello = "Hello everyone.";
echo $a ."<br />";
echo $hello ."<br />";
echo $$a ."<br />"; // выводит Hello everyone.
// Пример seats.
$a = 'Kevin';
$b = 'Mary';
$c = 'Joe';
$d = 'Larry';
$e = 'Audrey';
$students = array('a', 'c', 'e');
foreach($students as $seat) {
echo $$seat ."<br />";
}
/* Выводит: Kevin Joe Audrey */
foreach($students as $seat) {
echo ${$seat[1]} ."<br />"; // ничего не выводится
}
foreach($students as $seat) {
echo ${$seat}[1] ."<br />"; // e o u
}
?>
</body>
</html>
<?php
$a = 'hello';
?>
Переменная переменной берет значение переменной и рассматривает его как имя переменной. В вышеприведенном примере hello может быть использовано как имя переменной при помощи двух знаков доллара. То есть:
<?php
$$a = 'world';
?>
Теперь в дереве символов PHP определены и содержатся две переменные: $a, содержащая "hello", и $hello, содержащая "world". Таким образом, выражение
<?php
echo "$a ${$a}";
?>
выведет то же, что и
<?php
echo "$a $hello";
?>
то есть, они оба выведут: hello world.
Для того чтобы использовать переменные переменных с массивами, вы должны решить проблему двусмысленности. То есть, если вы напишете $$a[1], обработчику необходимо знать, хотите ли вы использовать $a[1] в качестве переменной, либо вам нужна как переменная $$a, а затем ее индекс [1]. Синтаксис для разрешения этой двусмысленности таков: ${$a[1]} для первого случая и ${$a}[1] для второго.
<html>
<head>
<title>Variable Variables</title>
</head>
<body>
<?php
$a = "hello";
$hello = "Hello everyone.";
echo $a ."<br />";
echo $hello ."<br />";
echo $$a ."<br />"; // выводит Hello everyone.
// Пример seats.
$a = 'Kevin';
$b = 'Mary';
$c = 'Joe';
$d = 'Larry';
$e = 'Audrey';
$students = array('a', 'c', 'e');
foreach($students as $seat) {
echo $$seat ."<br />";
}
/* Выводит: Kevin Joe Audrey */
foreach($students as $seat) {
echo ${$seat[1]} ."<br />"; // ничего не выводится
}
foreach($students as $seat) {
echo ${$seat}[1] ."<br />"; // e o u
}
?>
</body>
</html>
Комментариев нет:
Отправить комментарий