分类: Python/Ruby
2012-05-25 11:49:00
empty
empty是语句
如果 变量 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var、未定义; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。
isset
isset是语句, 和echo, print一样, 是PHP本身的一种语言结构.
如果 变量 存在(非NULL)则返回 TRUE,否则返回 FALSE(包括未定义)。变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。注意,isset对于NULL值变量,特殊处理。 ]
Is_null
is_null是函数
检测变量是否是null,它的值是null,或未定义返回TRUE . 其它都返回 FALSE
xxx === null 等价于is_null 且速度比is_null快!
对照表:
变量 | empty | is_null | isset |
$a=”” | true | false | true |
a=null | true | true | false |
var $a | true | true | false |
$a=array() | true | false | true |
$a=false | true | false | true |
$a=15 | false | false | false |
$a=1 | false | false | true |
$a=0 | true | false | true |
$a=”0” | true | false | true |
$a=”true” | false | false | true |
a=”false” | false | false | true |
从中我们可以发现只要变量是否为" "、0、"0"、array()、false、null,只要是这些值empty都会返回true,而isset是判断变量是否存在,只要你这个变量不是 null或未赋值,返回结果都是true,而is_null正好是isset的反结果。
ini_set('default_charset', "utf-8");
$a = NULL;
if(isset($a)){
echo 'a已定义
';
}else{
echo 'a未定义
';
}
if($b === NULL){
echo 'b值为null
';
}else{
echo 'b值不为null
';
}
if(empty($a)){
echo 'a值为null
';
}else{
echo 'a值不为null
';
}
结果:
a未定义
b值为null
a值为null
疑问:怎么样判断一个变量被定义了,并且值为NULL呢?
通过上面比较,估计大家与我一样,会有这个问题浮现在脑海里面。 检测一个变量是否是null 可以用:is_null,但如果变量未定义用它检测会出错。因此,我们想到,检测变量是否定义可以用:isset,但是如果一个变量值是:null, 则它会返回false . 哈哈,这个问题怎么样解决呢?等待大家分享……
function checkNull($a)
{
if(array_key_exists($a,$GLOBALS))
{
global $$a;
if(is_null($$a))
return true;
}
return false;
}
$test=null;
var_dump(checkNull("test"));
var_dump(checkNull("test1"));