#4.13 php Статические переменные
Primary tabs
Следует иметь в виду, что локальные переменные в функциях инициализируются при каждом ее запуске. Между вызовами функции значения локальных переменных не сохраняются. Это демонстрирует пример 1, в котором делается попытка использовать функцию track_count
для увеличения значения внутреннего счетчика.
Пример 1. Попытка создания счетчика
<HTML> <HEAD> <TITLE> Статические переменные </TITLE> </HEAD> <BODY> <H1> Статические переменные </H1> <?php function track_count() { $counter = 0; $counter++; return $counter; } echo "Значение счетчика : ", track_count (), "<BR>"; echo "Значение счетчика : ", track_count (), "<BR>"; echo "Значение счетчика : ", track_count (), "<BR>"; echo "Значение счетчика : ", track_count (), "<BR>"; echo "Значение счетчика : ", track_count (), "<BR>"; ?> </BODY> </HTML>
Как видно из рис.1, попытка создания счетчика оказалась неудачной, так как значение переменной $counter
теряется после каждого возврата из функции.
Для решения данной проблемы следует объявить переменную $counter
как статическую. Статические переменные сохраняют свое значение между вызовами функции. Как видно из примера 2, единственное ключевое слово static
превращает неработоспособный код в работающее приложение.
Пример 2. Работоспособный счетчик вызовов
<HTML> <HEAD> <TITLE> Статические переменные </TITLE> </HEAD> <BODY> <H1> Статические переменные </H1> <?php function track_count() { static $counter = 0; $counter++; return $counter; } echo "Значение счетчика : ", track_count (), "<BR>"; echo "Значение счетчика : ", track_count (), "<BR>"; echo "Значение счетчика : ", track_count (), "<BR>"; echo "Значение счетчика : ", track_count (), "<BR>"; echo "Значение счетчика : ", track_count (), "<BR>"; ?> </BODY> </HTML>
Рис. 2 демонстрирует, что теперь значение переменной $counter
сохраняется между вызовами функции track_count
.
- Log in to post comments
- 224 reads