为什么变量的 'NULL' 值不是用 echo 和 print 显示,而是用 var_dump() 函数显示?

Why the 'NULL' value of a variable is not displayed using echo and print but displayed with var_dump() function?

众所周知,如果创建一个没有值的变量,它会被自动赋值为NULL。

我有以下代码片段:

<?php
    $name;
    echo $name;     
?>

AND

<?php
    $name;
    print $name;     
?>

以上两个代码片段的输出如下(完全一样):

Notice: Undefined variable: name in C:\xampp\htdocs\php_playground\demo.php on line 7

我还有另一个代码片段:

<?php
    $name;
    var_dump($name);     
?>

上面(最后)代码片段的输出如下:

Notice: Undefined variable: name in C:\xampp\htdocs\php_playground\demo.php on line 8
NULL

所以,我的问题是为什么当我尝试使用 echo 和 print 显示值 "NULL" 时没有显示它?

但是,当我尝试使用 var_dump() 函数显示它时,显示了 "NULL" 值。

为什么会这样?

这种行为背后的原因是什么?

谢谢。

您遇到的问题是 NULL 不是 任何东西 - 它是缺少值。

当您尝试 echoprint 时,您会收到有关未定义变量的通知,因为 $name 的值未设置为任何值,您不能echo 缺少某物。

$name;
var_dump($name);

它的输出将是 NULL,告诉您该变量没有值。它不是一个值为"NULL"的字符串,它只是NULL,什么都没有,缺少一些东西。

将此与以下内容进行比较:

$name = '';
var_dump($name);

这输出 string(0)"" - 这告诉你 $name DID 有一个值,它是一个 string 不包含字符 ("")总长度 0.

最后看下面:

$name = 'test';
var_dump($name);

这会输出 string(4)"test" - 包含 teststring,其长度为 4