Вопрос про переменные PHP. Уровень - Чайник.

LH
На сайте с 26.09.2013
Offline
89
642

Здравствуйте!

Пример из книжки:

------------------------

Предположим, необходимо создать несколько переменных, имена которых совпадают

с названиями городов, а их значениями является количество людей, населяющих соответствующий

город. Для этого можно использовать такой код:

1 $Reno = 360000;

2 $Pasadena = 138000;

3 $cityname = "Reno";

4 echo "Население $cityname - ${$cityname}";

5 $cityname = "Pasadena";

6 echo "Население $cityname - ${$cityname}";

Результатом выполнения этого кода является следующий текст:

Население Reno - 360000

Население Pasadena - 138000

Обратите внимание, что в операторе echo имена переменных необходимо заключать

в фигурные скобки. Без использования фигурных скобок вы получите совсем другой результат.

------------------------

Переменные $cityname имеют значения "Reno"; и "Pasadena";

Каким образом в примере получилось:

"Население Reno - 360000

Население Pasadena - 138000"

ведь оператор echo имеет одинаковые переменные: "Население $cityname - ${$cityname}"; по моей логике должно, что то одно взяться (один город в смысле)

Получается учитывается строка? То есть строка 5 и 6 это уже отдельный сценарий?

Заранее спасибо всем ответившим!

vandamme
На сайте с 30.11.2008
Offline
675
#1

доллар не теряйте

speed-core
На сайте с 30.03.2014
Offline
33
#2
Каким образом в примере получилось:
"Население Reno - 360000
Население Pasadena - 138000"
ведь оператор echo имеет одинаковые переменные: "Население $cityname - ${$cityname}"; по моей логике должно, что то одно взяться (один город в смысле)

$cityname - это переменная, которая содержит значене $cityname='значение';

${$cityname} - это переменная, имя которой $значение переменной $cityname.

Это 2 разные переменные,

//Присваиваем переменной Reno значене 360000

1 $Reno = 360000;

//Присваиваем переменной Pasadena значение 138000

2 $Pasadena = 138000;

//Присваиваем переменной значение Reno

3 $cityname = "Reno";

4 echo "Население $cityname - ${$cityname}";

/*

Перезаписываем переменную на Pasadena

для добавления записи в строку надо перед = ставить . или после равно Объединять старую переменную + новые данные:

Например:

$cityname .= "Pasadena"; //Добавление в конец строки.

или

$cityname = $cityname."Pasadena"; // - данный способ результат будет тот же - но выполняется не одинаково "объединение"

*/

5 $cityname = "Pasadena";

/*

Запись 6 будет читаться так: выводим "Населенный значение от переменной $cityname -

выводим переменную ${отобразить значение $cityname}, то есть переменную с именем значения от переменной $cityname"

*/

6 echo "Население $cityname - ${$cityname}";

Как смог пояснил.

HOST-PROTECTION (/ru/forum/848747), профессиональный web хостинг, гарантия стабильности, защита от DDoS.
S3
На сайте с 29.03.2012
Online
367
#3

Чем это лучше массивов многоуровневых? Память экономит?

speed-core
На сайте с 30.03.2014
Offline
33
#4

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

doctorpc
На сайте с 12.07.2009
Offline
112
#5
Sly32:
Чем это лучше массивов многоуровневых? Память экономит?

Думаю, в данном случае цель была просто показать, что такое вообще возможно - использовать переменную в имени переменной.

S3
На сайте с 29.03.2012
Online
367
#6
speed-core:
Sly32, преимущество есть. Не только по памяти но и по скорости работы. Но необходимо понимать, где нужно использовать подобный метод, а где необходимо избежать.

Расскажите вкратце.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий