我遇到了一个教程,当我们重新初始化一个具有值的变量时,该变量仍然具有前一个值,而不是删除该值。
我是第3版var_dump我期待NULL
,但它会打印volvo
。
这不会在代码中造成令人困惑的事情。
$carName;
var_dump($carName);
$carName = "Volvo";
var_dump($carName);
$carName;
var_dump($carName);
NULL
string(5) "Volvo"
string(5) "Volvo"
我还看到javascript
具有相同的行为。
这是语言的一个很好的功能还是一个糟糕的功能。 根据我的想法,这很糟糕,请解释一下。提前致谢 。
答案 0 :(得分:3)
$carname;
实际上并没有做任何事情。它既不会将变量用于任何操作,也不会为其分配任何内容。在PHP中,通过为它们分配内容来“初始化”变量。如果有的话,$carname;
与没有echo $carname;
的{{1}}相同,那只是NOOP。事实上,第一行也没有做任何事情,第一行echo
会触发var_dump
通知。
答案 1 :(得分:1)
写作:
$carName;
不会初始化变量。它读取变量但不对其读取的值执行任何操作。
您需要为其分配null
:
$carName = null;
答案 2 :(得分:1)
PHP的最新实现完全忽略了$carName;
行。
$data;
echo $data;
操作码。
line # * op fetch ext return operands
-----------------------------------------------------------------------
4 0 > ECHO !0
1 > RETURN 1
http://3v4l.org/c3snU/vld#tabs
其他实现将此行视为读取操作并引发Undefined variable
通知。
答案 3 :(得分:0)
如果您需要$ carName为null,则应将其设置为null:
$carName = null;
$ carName;单独没有任何事情。