入门 - 判断是否为空 ¶
作者:KK
发表日期:2017.1.13
经常要判断一些数据是否为空、是否为false、是否为0等,PHP提供了一个empty
函数来判断
其实接触别人的源码时也会经常看到人家用empty函数来做相关的判断的,可我在这里想说的是,其实不用empty函数也能做判断,代码书写更精炼,且看下面的对比例子:
function dump($str){
echo $str . '<br/>';
}
$int = 0;
$bool = false;
$str = '';
$arr = [];
if(empty($int)){
//条件符合
dump('0 empty');
}
if(!$int){
//效果一样,也符合
dump('!0');
}
if(empty($bool)){
//条件符合
dump('false empty');
}
if(!$bool){
//效果一样,也符合
dump('!false');
}
if(empty($str)){
//条件符合
dump('false empty');
}
if(!$str){
//效果一样,也符合
dump('!false');
}
if(empty($arr)){
//条件符合
dump('[] empty');
}
if(!$arr){
//效果一样,也符合
dump('![]');
}
我是主张惜字如金的开发者,所以其实我基本上判断为空都是用!
号来判断的,觉得写empty函数判断有点不必要了
你可能会问 ¶
!
号运算符在if判断里应该跟true/false
判断更加紧密一点,如果跟非boolean类型的值做判断,虽然目前是可以条件成立,但会不会留下什么坑点导致未来判断不灵验?答:我相信不会,从PHP5.2到PHP7我一直都坚持使用
!
号判断,从未失灵过
官方未来升级会不会不兼容
!
号判断,我认为不会,因为我看到一些著名的开源项目都是通常用!
号来运算空条件的,说明这些项目的开发者都和我的想法差不多,觉得!号就够了,大家都想写更精炼的代码,不啰嗦答:则既然有这么多项目都这么写了,如果PHP升级时要改变这种判断的底层逻辑,对这么多项目造成影响并不是好事,其实继续支持!号快速运算又不会有什么问题,作为一个非严谨的语言,提供这些不就是为了让大家用得爽,写得快吗?