PHP有很多不同的函数用来测试某个变量的值。isset()empty()is_null()是三个常用的函数,它们都返回一个布尔值。如果这些函数没有正确使用,可能会引起意想不到的结果。(注意,issetempty不是函数,而是语言构造器,但其使用方法跟函数类似,所以本文将其称为“函数”)



isset()

PHP手册上这样描述:


isset — 检测变量是否设置

换句话说,它只在变量不是null(NOT NULL)值时返回真(TRUE)



empty()

PHP手册上这样描述:


empty — 检查一个变量是否为空

换句话说,如果变量值是一个空字符、FALSE、array()、NULL、'0'、0或者未设置变量,那它将返回真(TRUE)



is_null()

PHP手册上这样描述:


is_null — 检测变量是否为 NULL 

换句话说,它只在变量是NULL的时候返回真(TRUE)is_null()isset()刚好相反。



下表是这些函数对不同的值返回结果的一个简单的参考。空白表示这个函数返回假(bool(false))



足间舞ROOM














































































变量值 ($var) isset($var) empty($var) is_null($var)
"" (空字符) bool(true) bool(true)  
" " (空格) bool(true)    
FALSE bool(true) bool(true)  
TRUE bool(true)    
array() (空数组) bool(true) bool(true)  
NULL   bool(true) bool(true)
'0' (表示为字符的0) bool(true) bool(true)  
0 (表示为整型的0) bool(true) bool(true)  
0.0 (表示为浮点数的0) bool(true) bool(true)  
var $var; (定义了一个变量,但没有值) bool(true) bool(true)  
NULL字节("\0") bool(true)    


你可以用下面的代码来得到上面的表:


<?php
echo '<table border="1">';
echo '<tr><th>变量值($var)</th><th>isset($var)</th><th>empty($var)</th><th>is_null($var)</th></tr>';
$var = '';
echo '<tr><td>"" (空字符)</td><td>';
var_dump(isset($var));
echo '</td><td>';
var_dump(empty($var));
echo '</td><td>';
var_dump(is_null($var));
echo '</td></tr>';

$var = ' ';
echo '<tr><td>" " (空格)</td><td>';
var_dump(isset($var));
echo '</td><td>';
var_dump(empty($var));
echo '</td><td>';
var_dump(is_null($var));
echo '</td></tr>';

$var = FALSE;
echo '<tr><td>FALSE</td><td>';
var_dump(isset($var));
echo '</td><td>';
var_dump(empty($var));
echo '</td><td>';
var_dump(is_null($var));
echo '</td></tr>';

$var = TRUE;
echo '<tr><td>TRUE</td><td>';
var_dump(isset($var));
echo '</td><td>';
var_dump(empty($var));
echo '</td><td>';
var_dump(is_null($var));
echo '</td></tr>';

$var = array();
echo '<tr><td>array() (空数组)</td><td>';
var_dump(isset($var));
echo '</td><td>';
var_dump(empty($var));
echo '</td><td>';
var_dump(is_null($var));
echo '</td></tr>';

$var = NULL;
echo '<tr><td>NULL</td><td>';
var_dump(isset($var));
echo '</td><td>';
var_dump(empty($var));
echo '</td><td>';
var_dump(is_null($var));
echo '</td></tr>';

$var = '0';
echo '<tr><td>"0" (表示为字符的0)</td><td>';
var_dump(isset($var));
echo '</td><td>';
var_dump(empty($var));
echo '</td><td>';
var_dump(is_null($var));
echo '</td></tr>';

$var = 0;
echo '<tr><td>0 (表示为整型的0)</td><td>';
var_dump(isset($var));
echo '</td><td>';
var_dump(empty($var));
echo '</td><td>';
var_dump(is_null($var));
echo '</td></tr>';

$var = 0.0;
echo '<tr><td>0.0 (表示为浮点数的0)</td><td>';
var_dump(isset($var));
echo '</td><td>';
var_dump(empty($var));
echo '</td><td>';
var_dump(is_null($var));
echo '</td></tr>';

足间舞ROOM


unset($var); // 预防措施,保证$val未定义。
$var;
echo 'var $var; (变量已定义,但没有值)';
var_dump(isset($var));
echo '</td><td>';
var_dump(empty($var));
echo '</td><td>';
var_dump(is_null($var));
echo '</td></tr>';

$var = '\0';
echo '<tr><td>NULL字节 ("\0")</td><td>';
var_dump(isset($var));
echo '</td><td>';
var_dump(empty($var));
echo '</td><td>';
var_dump(is_null($var));
echo '</td></tr>';

echo '</table>';
?>

上一篇 下一篇