上次我正在探索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视为相同?
答案 0 :(得分:5)
特殊的NULL值表示没有值的变量。 NULL是NULL类型唯一可能的值。
如果出现以下情况,则认为变量为空:
它已被赋予常量NULL 尚未设置为任何值 它一直未设置()。
(int)$test
=强制转换,强制将值强制为数据类型(整数)
警告通知= $ test的原因从未定义,并且您尝试使用它
var_dump($ test)=我有一个$ test的值,所以,我给你一个null(由PHP)