为什么是一个varibale" NULL"而不是未定义?

时间:2017-08-16 00:04:41

标签: php

我期待看到像 PHP注意:通知:未定义的变量:这样的通知,但是当我运行此代码时它完全正常。而且,变量变为NULL。为什么呢?

<?php

    function($a = 1) use (&$a) {};
    var_dump($a); // NULL <---- Expected a Notice "undefined", got "NULL"

Demo

2 个答案:

答案 0 :(得分:1)

我认为&运算符会静默创建变量,如果它已经存在的话。 seems this page try to explain itIf 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将根据您使用变量的方式进行类型转换。这有时会导致意外的行为。”