<!--[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?中发生了改变,它将被认为是空值。