为什么在初始化变量之后仍然存在先前的值 - PHP

时间:2015-03-03 07:02:03

标签: javascript php

我遇到了一个教程,当我们重新初始化一个具有值的变量时,该变量仍然具有前一个值,而不是删除该值。

我是第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具有相同的行为。

这是语言的一个很好的功能还是一个糟糕的功能。 根据我的想法,这很糟糕,请解释一下。提前致谢 。

4 个答案:

答案 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通知。

http://3v4l.org/c3snU#vhhvm-350

答案 3 :(得分:0)

如果您需要$ carName为null,则应将其设置为null:

$carName = null;

$ carName;单独没有任何事情。