#php
Имеем 2 примера
Первый:
function a()
{
static $number = 0;
echo "[".$number."]";
$number++;
echo "-[".$number."]\n";
}
a();
a();
a();
В результат:
[0]-[1]
[1]-[2]
[2]-[3]
Второй
$digit = 10;
function a()
{
static $number = 0;
echo "[".$number."]";
$number = &$GLOBALS["digit"];
$number++;
echo "-[".$number."]\n";
}
a();
a();
a();
Результат:
[0]-[11]
[0]-[12]
[0]-[13]
Мне непонятно почему так происходит когда мы не используем ссылку то все работает
как и ожидается, но когда мы используем ссылку статическая переменная обнуляется?
Я хочу просто понять почему это так работает!
Ответы
Ответ 1
Переменная - это именованная область памяти (имя переменной и область памяти на которое это имя ссылается). Статические переменные - это специальные переменные с измененной областью видимости. Причем признак того, что переменная статическая определено в ее области памяти. Пока вы при помощи имени $number пользуетесь статической областью памяти все нормально. Как только вы ссылаетесь при помощи ссылки на другую область памяти, вы имеете дело уже с другим значением. Посмотрите на этот код
Комментариев нет:
Отправить комментарий