最常用的两个函数,许多来应聘的有多年编程经验的老鸟都搞不清楚,见下面的例子:
- $arr[] = '';
- $arr[] = 0;
- $arr[] = NULL;
- $arr[] = null;
- $arr[] = '0';
- $arr[] = ' ';
- echo "isset\tempty\n";
- echo "-------------------------------\n";
- foreach ($arr as $key => $val)
- {
- echo isset($val) ? 'true': 'false';
- echo "\t";
- echo empty($val) ? 'true': 'false';
- echo "\n";
- }
输出:
- isset empty
- -------------------------------
- true true
- true true
- false true
- false true
- true true
- true false
当我们在表单输入时,经常遇到的一个问题,尤其是在做配置的时候,当填入0时,代表的是值是0,但不填值表示的可能是该值未定义。对于这种情况可以用下面的函数来做判断:
- /**
- * 判断值是否为空
- *
- * 在php中,0,null,array()和''用empty函数判断时都会返回true, 但实际上很多情况下0是不应当被认为是空
- * 的。比如在设置参数值时,0可能表示值真的是0,而空字符串则可能表示该值未设置
- *
- * @author ustb80
- * @param mixed $value 变量值
- * @param boolean $is_trim 是否要去掉前后空格
- * @return boolean
- */
- function isEmpty($value, $is_trim = false)
- {
- return $value === null || $value === array() || $value === '' || ($is_trim && is_scalar($value) && trim($value) === '');
- }
- echo isEmpty(0) ? '1':'0';
- echo isEmpty('0') ? '1':'0';
输出:
- 00
可以看到输入0已不再被认为是空了,不论其是字符还是数字。
本文转自 ustb80 51CTO博客,原文链接:http://blog.51cto.com/ustb80/1047128,如需转载请自行联系原作者