为什么解释器显示未定义为NULL?

时间:2011-12-03 05:57:38

标签: php interpreter var-dump

上次我正在探索PHP,我很好奇是否可以定义变量而不像C ++那样初始化它。

如果我将运行此代码,那么解释器不会输出致命的错误(只有通知变量测试未定义):

<?php 

$test = (int) $test;

?>

如果我尝试用var_dump()函数检查它,我得到:

int(0)

我假设解释器自动将undefined转换为整数。嗯,好吧,这很聪明。 但当我删除代码类型转换的代码并使用var_dump()函数检查它时,我得到:

NULL

好吧,好吧。因此,当我将未定义的变量指定为未定义的变量时,我得到NULL变量。我可以理解翻译在运行中为我做的。但是当我尝试这样的事情时:

<?php

var_dump($test);
var_dump($test);

?>

我得到两个通知,即未定义测试,但var_dump()返回NULL,而不是未定义。现在我不明白。如果我将关闭通知,var_dump()函数将与未定义的变量和分配给NULL的变量具有相同的结果。这是一个来自主题的问题。为什么解释器(或者说var_dump()函数)将undefined和NULL视为相同?

1 个答案:

答案 0 :(得分:5)

  

特殊的NULL值表示没有值的变量。 NULL是NULL类型唯一可能的值。

     

如果出现以下情况,则认为变量为空:
  它已被赋予常量NULL   尚未设置为任何值   它一直未设置()。

(int)$test =强制转换,强制将值强制为数据类型(整数)

警告通知= $ test的原因从未定义,并且您尝试使用它

var_dump($ test)=我有一个$ test的值,所以,我给你一个null(由PHP)