Я ожидал увидеть уведомление, как Примечание PHP: Неопределенная переменная:, Однако, когда я запускаю этот код, он прекрасно работает. Более того, переменная становится NULL. Зачем?
<?php
function($a = 1) use (&$a) {};
var_dump($a); // NULL <---- Expected a Notice "undefined", got "NULL"
я думаю &
оператор молча создает переменную, если она еще не существует. кажется, эта страница пытается объяснить это:
If you assign, pass, or return an undefined variable by reference, it will get created.
поэтому, когда вы делаете use (&$a)
, &
видит это $a
не существует, и создать его ..
что касается undefined
это не настоящий тип в PHP. (в отличие, например, от javascript, который на самом деле имеет тип с именем undefined и отдельный тип с именем null)
почему ноль? При условии undefined
не существует, это единственный логический выбор для начального значения, что вы ожидали инициализировать?
Других решений пока нет …