Разработчику. Сборник рецептов PHP
Задавайте вопросы

Создание динамического имени переменной

Вернуться назад

Задача

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

Решение

В PHP для применения синтаксиса переменных переменных в начало переменной, значение которой является требуемым именем переменной, добавляется символ $:

$animal = ' turtles ';
$turtles = 103;
print $$animal;

103

Обсуждение

Код предыдущего примера печатает 103. Так как $animal = ' turtles ', то переменная $$animal равна $turtles, которая, в свою очередь, равна 103.

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

$stooges = array(' Moe ',' Larry ',' Curly');
$stooge_moe = ' Moses Horwitz ';
$stooge_larry = ' Louis Feinberg ';
$stooge_curly = ' Jerome Horwitz ';

foreach ($stooges as $s) {
      print " $s's real name was ${' stooge_ '.strtolower($s)}.\n";
}

Moe's real name was Moses Horwitz.
Larry's real name was Louis Feinberg.
Curly's real name was Jerome Horwitz.

PHP вычисляет выражение, заключенное в фигурные скобки, и использует его в качестве имени переменной. Это выражение может даже включать в себя вызовы функций, например strtolower().
Переменные переменных удобны также для выполнения итераций по переменным, имеющим похожие имена. Скажем, из базы данных запрашивается таблица, поля которой имеют имена title_1, title_2 и т. д. Если требуется проверить, совпадает ли заголовок с одним из этих имен, то проще всего выполнить цикл по этим именам, примерно так:

for ($i = 1; $i <= $n; $i++) {
$t = " title_$i ";
if ($title == $$t) { /* совпадение */ }
}

Несомненно, естественнее хранить значения в массиве, но если вы поддерживаете старый код, в котором применяются эти приемы (и этот код нельзя изменить), то переменные переменные будут полезны.

Синтаксис фигурных скобок также необходим для разрешения неопределенностей в элементах массива. Переменная переменная $$donkeys[12] может иметь два значения. Первое значение: «Возьмите то, что находится в 12-м элементе массива $donkeys, и используйте в качестве имени переменной». Записывается это так: ${$donkeys[12]}. Второе значение: «Используйте содержимое скаляра $donkeys в качестве имени массива и загляните в 12-й элемент этого массива». Запись: ${$donkeys}[12].

См. также

http://www.php.net/language.variables.variable, где находится документация по переменным переменным.

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования

Рейтинг Сайтов ДОСКИ.РУ