Intereting Posts
Какой самый лучший и простой способ заполнить раскрывающийся список, основанный на другом выпадающем меню Отображать значение поплавка без научной нотации Междоменные сессии PHP Как узнать, вызван ли скрипт php через require_once ()? PHP strtotime () в Java Как запустить php-скрипт? Gettext: Это хорошая идея, чтобы идентификатор сообщения был английским текстом? Знаете ли вы о кадре с открытым исходным кодом zend? Facebook PHP throwing exception "(# 803) Некоторые из запрошенных вами псевдонимов не существуют" Кастинг объекта массиву – вызов любого магического метода? Отправка звука из Swift App на PHP Server, и где-то звук теряется Не удалось загрузить запрошенный языковой файл: язык / en / form_validation_lang.php Есть ли библиотека, которая может писать CSV-файл RFC 4180 с PHP? Как получить переменные системной среды в PHP при запуске CLI и Apache2Handler? Как подсчитать файлы в каталоге с помощью jQuery?

Как изменить значение статических переменных в PHP?

Это упрощенная версия того, что я хочу выполнить:

В моем сценарии я хочу переменную, которая меняет true и false каждый раз, когда скрипт выполняется.

<?php static $bool = true; // Print differente messages depending on $bool if( $bool == true ) echo "It's true!"; else echo "It's false!"; // Change $bools value if( $bool == true ) $bool = false else $bool = true; ?> 

Но очевидно, что я делаю неправильно. Переменная $bool постоянно true и я не полностью понял концепцию статических переменных, которые я предполагаю. Что я делаю не так?

Solutions Collecting From Web of "Как изменить значение статических переменных в PHP?"

PHP не может сохранять значения переменных между запросами. Это означает, что каждый раз, когда вызывается ваш скрипт, значение $bool -variable будет установлено в true. Если вы хотите сохранить значение между запросами, вам нужно использовать sessions или, если вы хотите, чтобы переменная была разделена между сеансами, некоторый механизм кеширования, такой как APC или Memcache .

Кроме того, static используется в PHP для объявления переменной, разделяемой на уровне класса. Таким образом, он используется в классах и доступен как self::$variableName; или Foo::$variableName

Здесь вы можете узнать больше о статических свойствах . Из документов:

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

Также обратите внимание, что слово static было перегружено с PHP 5.3, а также может использоваться для обозначения позднего статического привязки с использованием static::

Статическое значение не будет сохраняться при выполнении. Каждый раз, когда скрипт выполняется, $ bool инициализируется. Я думаю, вы должны сохранить эту ценность в файле, чтобы она была простой.

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

Для этого есть лучшие решения, как было предложено выше.