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

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

Решение
В 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].

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Обмен значениями без временных переменных
Операторы == и =: как избежать путаницы
Получение дампа содержимого переменных в виде строк
Сериализация данных сложных типов в виде строки
Совместное использование переменных процессами

Вернуться в раздел: PHP / 5. Переменные