Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

Загадка про PHP. Номер 7.

Загадка на static и unset. Дано:

function s()
{
static $a = 1;
echo $a++;
unset ($a);
}

array (s(), s());

Что будет на экране?

14 комментариев
Улитка 2003

Опять пример из документации на php, раздел unset.
Выведет 1, 2.

Евгений Степанищев (bolknote.ru) 2003

Комментарий для Улитка:

Да, оттуда. В своё время задумался, попробовал, почитал документацию.

Algis 2003

при следующем вызове функции PHP «забывает» что был unset() :))

Евгений Степанищев (bolknote.ru) 2003

Комментарий для Algis:

Он не забывает. :) Просто такова природа статик — где-то в памяти есть место, где хранится «статическое» значение, а $a — всего лишь ссылка на него, от того что она удаляется (она так же удаляется за пределами функции), ничего страшного не происходит.

Algis 2003

кстати, СПАСИБО за загадки, с некоторыми я еще не сталкивался, думаю эти упражнения поможет многим избежать ошыбок в будущем

Евгений Степанищев (bolknote.ru) 2003

Комментарий для Algis:

Поэтому я их и выкладываю.

Algis 2003

почаще да побольше бы… :)

Евгений Степанищев (bolknote.ru) 2003

Комментарий для Algis:

Мало? :))

Algis 2003

ага,
оччень люблю этот язык

Евгений Степанищев (bolknote.ru) 2003

Комментарий для Algis:

Уже есть задача номер E :)

Algis 2003

ну ты быстр :)

Евгений Степанищев (bolknote.ru) 2003

Комментарий для Algis:

Ну дык :)

derini 2003

может ты оформишь эти все загадки ввиде заметки на сайте чтобы было
легче искать и людей направлять :)

Евгений Степанищев (bolknote.ru) 2003

Комментарий для derini:

Ок, оформлю :)