我期待看到像 PHP注意:通知:未定义的变量:这样的通知,但是当我运行此代码时它完全正常。而且,变量变为NULL。为什么呢?
<?php
function($a = 1) use (&$a) {};
var_dump($a); // NULL <---- Expected a Notice "undefined", got "NULL"
答案 0 :(得分:1)
我认为&
运算符会静默创建变量,如果它已经存在的话。 seems this page try to explain it:
If you assign, pass, or return an undefined variable by reference, it will get created.
,所以当您执行use (&$a)
时,&
会看到$a
已经存在,并创建它。
至于undefined
,这不是PHP中的真实类型。 (例如,javascript,实际上有一个名为undefined的类型,以及一个名为null的单独类型)
为什么空?鉴于undefined
不存在,它是初始值的唯一逻辑选择,您期望将其初始化为什么?
答案 1 :(得分:0)
“如果不使用默认值初始化变量,PHP将根据您使用变量的方式进行类型转换。这有时会导致意外的行为。”