Страницы

Поиск по вопросам

вторник, 10 декабря 2019 г.

Как работает ключевое слово static

#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 пользуетесь статической областью памяти все нормально. Как только вы ссылаетесь при помощи ссылки на другую область памяти, вы имеете дело уже с другим значением. Посмотрите на этот код

Комментариев нет:

Отправить комментарий