1

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

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

<?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 视为相同?

4

1 回答 1

5

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

一个变量被认为是空的,如果:
它已经被分配了常量 NULL。
它尚未设置为任何值
它已被取消设置()。

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

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

var_dump($test) = 我不知道 $test 的值,所以,我返回一个空值(通过 PHP)

于 2011-12-03T06:04:34.340 回答