Меню Закрыть

Php динамическое имя переменной

Содержание

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

эквивалентно следующей записи

В переменной $holder записана строка "user", поэтому можно представить себе, что выражение $$holder – это знак $ , за которым следует значение переменной $holder. PHP интерпритирует это как $user .

Для обращения к динамической переменной используется тот же самый синтаксис:

Это эквивалентно следующему:

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

Обратите внимание, в последней строке print "$$holder"; выражение $$holder взято в двойные кавычки, в надежде вывести в окно строку ‘bob’.

Вместо этого выводится знак $ , а за ним строка user. Когда вы обрамляете переменную двойными кавычками, PHP подставляет вместо неё соответствующее значение. В данном случае PHP подставляет вместо переменной $holder её значение user. Для того, чтобы указать PHP, что часть строки – это динамическая переменная, вам нужно взять её в фигурные скобки. Следующий код выводит строку bob, то есть значение переменной $user .

Теперь можно догадаться что имена переменных можно записывать так:

В листинге ниже всё, сказанное раньше, объединено в программу, в которой с помощью строки, хранящейся в переменной, создаётся и инициализируется новая переменная $user .

Почему это называется "динамические переменные"

Возникает вопрос, почему этот тип переменных называется динамическими. Вердёмся к примеру

Тут $$var – динамическая переменная, так как её имя может меняться вместе с изменением переменной $var .

Читайте также:  Это устройство связано с существующим mi аккаунтом

Следует помнить, что меняя имя динамической переменной мы теряем её значение.

Если по ходу выполнения программы поменять значение переменной $var и присвоить новое значение $$var , то создастся новая переменная, а предыдущая переменная останется со старым значением.

То есть мы получаем механизм для создания "на лету" переменных с разными именами в нужных нам количествах.

Переменные переменные в PHP

Переменные переменные – это синоним, то есть другое название для динамических переменных в PHP. В англоязычном руководстве по PHP эти переменные названы "Variable variables", таким образом термин "переменные переменные" являются лингвистической калькой с английского языка.

Более сложные варианты использования динамических переменных в PHP

Возможны и более сложные варианты использования выражения: $ <‘строковое_выражение’>. Имя динамической переменной может быть результатом вычисления выражения.

Следующие переменные означают одну и ту же переменную с именем var:

Переменный с целыми числами (integer) в именах, например $ <33>, работают одинаково быстро наряду c обычными переменными, как $var . Но переменные, созданные с помощью строки, то есть $ <‘var’>, и динамические переменные $$var используют больше ресурсов, об этом стоит помнить при написании программ.

Далее следует изучить ссылки на переменные в PHP.

Мало кто знает, но в PHP существует возможность задавать динамические имена переменным. В этом коротком совете вы узнаете как это можно сделать.

Для решения нашей задачи следует использовать конструкцию $<> . Простой пример:

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: http://stackoverflow.com/questions/9257505/dynamic-variable-names-in-php
Перевел: Станислав Протасевич
Урок создан: 5 Августа 2015
Просмотров: 5067
Правила перепечатки

5 последних уроков рубрики "PHP"

Фильтрация данных с помощью zend-filter

Когда речь идёт о безопасности веб-сайта, то фраза "фильтруйте всё, экранируйте всё" всегда будет актуальна. Сегодня поговорим о фильтрации данных.

Читайте также:  Ipad air нет зарядки

Контекстное экранирование с помощью zend-escaper

Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

Подключение Zend модулей к Expressive

Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

Подборка PHP песочниц

Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

У меня такая ситуация:

Это работает. Но при доступе к массиву с переменной variable-name я всегда получаю пустой массив:

Как я могу получить доступ к массиву с именем переменной?

Решение

Потому что, когда вы использовали $$ тогда это означает, что вы ссылаетесь на переменные.

Вот $$string означает, что $ temp и что не имеет значения, так что это пустой результат.

В случае, если вы хотите работать, используйте как вы предложили.

Используйте код следующим образом:

ИЛИ ЖЕ

Таким образом, вы можете использовать $$ переменные переменной в php

Другие решения

Когда вы используете $$string[0] вы вызываете переменную с именем в массиве $string , Поскольку строки в основном являются сложными объектами, похожими на массивы, вы вызываете символ в позиции 0. Таким образом, в основном, вы получаете такой эффект:

Читайте также:  Как отключить экономию трафика на телефоне

потому что ссылка для $string[0] это первый символ в строке «temp», или «t», так что вы действительно просто вызываете $t , Что вам нужно $<$string>[0] ,

Если вы хотите, чтобы переменная была массивом:

Если вы хотите, чтобы ваш название вашей переменной быть массивом:

Первый пример того, что, я думаю, вы пытались сделать. Второй пример того, кем вы были на самом деле делает.

Или вы можете просто использовать ассоциативный массив:

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.