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