PHP7 关于变量的基本判断
刚学 PHP ,一些基础还不太牢固,边实践边记录。
about NULL
$class_name = null;
语句结束后,$class_name 是空,没有,什么都没有的“空”。用 is_null($class_name) 来判断就是“是”,用 empty 来检测也是“是”,来看下边的过程和结果:
$class_name = null; echo 'Is Empty: '.empty($class_name).'<br/>'; echo 'Is set: '.isset($class_name)."<br/>"; echo 'Is: '.$class_name."<br/>"; echo "Is null: ".is_null($class_name);
换一下,如果 $class_name = ""; 呢,看下边结果
下边,给 $class_name 赋值看看,先给个数字 1
再给个字符串 “1”
给个数字 0
字符串 “0”
贴近现实,给个 “abcdefg”
总结一下:
如果想像 C# 那样,判断一个“变量”不要是空,而且不要是空字符串,是有值的,empty() 似乎并不合适,因为它会把 0 或者 "0" 也认为是 empty,似乎 isset 或直接 if( $class_name )更合适一点;
小心!unset()之后,直接 echo $class_name 或者 echo is_null($class_name) 会出错,但 empty($class_name)会运行,并且为 1;
null | "" | 1 | "1" | 0 | "0" | string | |
Empty() | 1 | 1 | 1 | 1 | |||
isset | 1 | 1 | 1 | 1 | 1 | 1 | |
Is / Value | 1 | 1 | 0 | 0 | string | ||
is_null | 1 |
补:
想判断数字?先判断 isset,然后判断 is_numeric,is_numeric 会把字符串、十六进制等“试着”转换成数字,能转成就是“是”,转不了就是“否”。这样可以避免当 0 也是合法数字时,if($变量)会出现的逻辑遗憾