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

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

Загадка на ссылки и unset. Дано:

function a()
{
global $a;
unset($a);
$a = 2;
}

function b(&$a)
{
unset ($a);
$a = 2;
}

$a = 1;
a();
var_dump($a);

b($a);
var_dump($a);

Традиционно — что будет на экране?

4 комментария
Улитка 2003

На экране будет браузер. Или окно консоли, если вызов был через php.exe :-)
А функции выведут 2 и null.

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

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

<span style=«background-color: black; color: black»>

Функции выведут 1 и 1. unset уничтожает ссылку, а «global $a» эквивалентно «$a = &$GLOBALS[’a’]»

Кстати, на экране может быть и MySQL, например. :) Есть модуль, позволяющий вызывать PHP из MySQL.

</span>

Улитка 2003

Вот где собака порылась! Теперь запомню.

И еще: ты mysql не из консоли запустил? :-)

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

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

Могу запустить из MySQL Control Center, как я обычно и делаю.