在PHP家族中,empty绝对是一个经济适用男。作为一个PHPer,无论你是高富帅、白富美还是矮穷挫,相信一定会经常和他打交道。
empty工作在PHP社会的最基层,工作是检测一个变量是否为非空或非0的值。和其同一岗位的是is_null()、==""、==false、==0、strlen()、count()等,相对这几位大哥的只对自己专业领域的工作负责,empty绝对是一个劳动模范,他工作范围极其广泛,而且练就火眼金睛,""、0、"0"、FALSE
、array()、var $var、没有任何属性的对象都休想从他眼前蒙混过关。
empty君的另外一个优点是当变量没有设置值时不会产生警告。
$arr = array();
// 抛出警告 Notice: Undefined index
if ($arr['name'] == "") {
echo 'empty';
}
// 不抛出警告
if (empty($arr['name'])) {
echo 'empty';
}
因此,各位兄弟姐妹们一定要和empty作朋友。
金无赤足,人无完人,劳动模范也有缺点。下面的情况相信绝大多数PHPer都遇到过:
function get_name(){
//
}
// 抛出Fatal error
if (empty(get_name())){
//
}
$name = $_POST['name'];
// 抛出Fatal error
if (empty(trim($name))){
//
}
是的,empty君只对变量感兴趣,对其它非变量的东西都将拒绝工作。
但是喜欢empty这个经济适用男的妹妹也不用伤心,人民的智慧是无穷的,我们对empty重新包装一下:
/**
* 检测变量是否非空或非零
*
* @param mixed $var
* @return boolean
*/
function is_empty($var) {
return empty($var);
}
function get_name(){
return '';
}
if (is_empty(get_name())){
//
}
使用包装改造的is_empty函数就可以直接检测函数啦。
empty的其它秘密:
1:empty()不是一个函数,而是一个语言构造器。
2:empty()和(boolean)var 是反义词。