最新消息: 新版网站上线了!!!

php 之中的 null , empty string

在stackoverflow上,有人提出个问题《In PHP, what is the differences between NULL and setting a string to equal 2 single quotes》,即null和空string的区别。我原本对两者也有点儿混淆,不过看了下面的答案,再看了看manual,自己实验了下,基本有了清晰的概念,下面分几点简单说说:
 
1、null 是一种数据类型
在手册的介绍中可以看到,null更多时候用来判断unset的结果。unset的作用是“释放给定的变量”,可以理解为在内存中销毁该变量,而其他的类型,不论空字符串、0或则false,显而易见,变量是存在的,这是两者本质区别。你可以使用isset()或者is_null()来确定变量是否存在,这是一对反意方法。但是,使用null需要注意下面的问题:
 
Null, however, is a different kind of animal. The main incompatibility with using Null is that you cannot tell if it isset().
$x = false;
isset($x)  ->  true
echo $x    ->  ""
$y = null;
isset($y)  ->  false
echo $y    ->  ""
//$z is not set
isset($z)  ->  false
echo $z    ->  E_NOTICE
从例子看出来 ,使用null赋值是没有实际意义,是种incompatibility(禁忌)
 
2、php的false
php是一种松散轻量级语言。在php中,有N多false的形态
"", 0, "0", False, array(), Null are all considered False in PHP
使用的时候,可以用false来判断这些形态,使代码变得简单
 
======================================================================================
参考链接:
http://stackoverflow.com/questions/624922/in-php-what-is-the-differences-between-null-and-setting-a-string-to-equal-2-sin
http://www.php.net/manual/zh/function.unset.php
 

转载请注明:谷谷点程序 » php 之中的 null , empty string