<!--[if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8</w:DrawingGridVerticalSpacing><w:View>Normal</w:View><w:Compatibility></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]-->
以下的表格显示了 PHP 变量类型和比较符在松散和严格比较时的作用。该补充材料还和类型戏法的相关章节内容有关。
在使用这些表格之前,我们需要明白变量类型及它们的意义。例如,"42" 是一个字符串而 42 是一个整数。FALSE 是一个布尔值而 "false" 是一个字符串。
注: HTML 表单并不传递整数、浮点数或者布尔值,它们只传递字符串。要想检测一个字符串是不是数字,我们可以使用 is_numeric() 函数。
注: 在没有定义变量 $x 的时候,诸如 if ($x) 的用法会导致一个 E_NOTICE 级别的错误。所以,我们可以考虑用 empty() 或者 isset() 函数来初始化变量。
表格 L-1. 用 PHP 函数对 $x 的比较
表达式
| gettype()
| empty()
| is_null()
| isset()
| boolean : if($x)
| $x = "";
| string
| TRUE
| FALSE
| TRUE
| FALSE
| $x = NULL
| NULL
| TRUE
| TRUE
| FALSE
| FALSE
| var $x;
| NULL
| TRUE
| TRUE
| FALSE
| FALSE
| $x 从未定义
| NULL
| TRUE
| TRUE
| FALSE
| FALSE
| $x = array();
| array
| TRUE
| FALSE
| TRUE
| FALSE
| $x = false;
| boolean
| TRUE
| FALSE
| TRUE
| FALSE
| $x = true;
| boolean
| FALSE
| FALSE
| TRUE
| TRUE
| $x = 1;
| integer
| FALSE
| FALSE
| TRUE
| TRUE
| $x = 42;
| integer
| FALSE
| FALSE
| TRUE
| TRUE
| $x = 0;
| integer
| TRUE
| FALSE
| TRUE
| FALSE
| $x = -1;
| integer
| FALSE
| FALSE
| TRUE
| TRUE
| $x = "1";
| string
| FALSE
| FALSE
| TRUE
| TRUE
| $x = "0";
| string
| TRUE
| FALSE
| TRUE
| FALSE
| $x = "-1";
| string
| FALSE
| FALSE
| TRUE
| TRUE
| $x = "php";
| string
| FALSE
| FALSE
| TRUE
| TRUE
| $x = "true";
| string
| FALSE
| FALSE
| TRUE
| TRUE
| $x = "false";
| string
| FALSE
| FALSE
| TRUE
| TRUE
|
表格 L-2. 用 == 进行松散比较
| TRUE
| FALSE
| 1
| 0
| -1
| "1"
| "0"
| "-1"
| NULL
| array()
| "php"
| TRUE
| TRUE
| FALSE
| TRUE
| FALSE
| TRUE
| TRUE
| FALSE
| TRUE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| TRUE
| FALSE
| TRUE
| FALSE
| FALSE
| TRUE
| FALSE
| TRUE
| TRUE
| FALSE
| 1
| TRUE
| FALSE
| TRUE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| 0
| FALSE
| TRUE
| FALSE
| TRUE
| FALSE
| FALSE
| TRUE
| FALSE
| TRUE
| FALSE
| TRUE
| -1
| TRUE
| FALSE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| FALSE
| "1"
| TRUE
| FALSE
| TRUE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| "0"
| FALSE
| TRUE
| FALSE
| TRUE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| FALSE
| FALSE
| "-1"
| TRUE
| FALSE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| FALSE
| NULL
| FALSE
| TRUE
| FALSE
| TRUE
| FALSE
| FALSE
| FALSE
| FALSE
| TRUE
| TRUE
| FALSE
| array()
| FALSE
| TRUE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| TRUE
| FALSE
| "php"
| TRUE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| TRUE
|
表格 L-3. 用 === 进行严格比较
| TRUE
| FALSE
| 1
| 0
| -1
| "1"
| "0"
| "-1"
| NULL
| array()
| "php"
| TRUE
| TRUE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| 1
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| 0
| FALSE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| -1
| FALSE
| FALSE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| "1"
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| "0"
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| FALSE
| FALSE
| "-1"
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| FALSE
| NULL
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| TRUE
| FALSE
| FALSE
| array()
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| TRUE
| FALSE
| "php"
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| FALSE
| TRUE
| PHP 3.0 注意事项: 在 PHP 3 中,字符串 "0" 被认为是非空的,这个情况在 PHP 4 中发生了改变,它将被认为是空值。 |