2017年10月

PHP 提供了3个用于测试变量值的函数,分别是isset()、empty()、is_null(从这里就可以看出PHP系统函数变量名命名的混乱,这也是一直被人诟病的地方)。这几个函数均返回布尔值,有时使用不当会造成意想不到的结果。

比如,用isset()和empty()返回的结果是相反的,但却并非一直如此。

isset()用来检测一个变量是否已声明且值不为null。只能在变量不是null时返回真。

empty()用来检测一个变量是否为空,也就是说有如下情况时返回真值:变量是一个空字符串,false,空数组,null,'',以及被unset删除后的变量。

在PHP5.5之后,empty()函数可以接受任意类型的表达式

is_null()函数用来判断变量内容是否是null,即返回真值的条件仅为变量值是null,值得一提的是,is_null() 是 isset() 的反函数,区别是isset()函数可以应用到未知变量,但is_null()只能针对以声明的变量。

对比项
变量值($var)isset($var)empty($var)is_null($var)
""(空字符串)bool(true)bool(true)bool(false)
" "(空格)bool(true)bool(false)bool(false)
FALSEbool(true)bool(true)bool(false)
TRUEbool(true)bool(false)bool(false)
array()bool(true)bool(true)bool(true)
NULL bool(true)bool(true)

对于PHP编译器来说,脚本的结束标签?>是可选的,在写程序时你可以忽略它。你或许碰见过:在使用include()、require()或输入输出缓冲函数时,页面顶部有时会多空行或者出现“header had send”之类的错误信息,这类问题与结束标签有关。

省略结束标签适合纯PHP文件。如果是PHP与HTML混合开发,则不可省略。

忽略结束标签不仅能少些两个字符,而且可以使得我们开发的过程更加顺利。