检查数组是否为空
我有以下代码
<?php $error = array(); $error['something'] = false; $error['somethingelse'] = false; if (!empty($error)) { echo 'Error'; } else { echo 'No errors'; } ?>
然而, empty($error)
仍然返回true
,即使没有设置。
什么不对?
数组中有两个元素,这绝对不意味着该数组是空的。 作为一个快速的解决方法,你可以做到以下几点:
$errors = array_filter($errors); if (!empty($errors)) { }
array_filter()
函数的默认行为将从数组中删除所有等于null
, 0
, ''
或false
。
否则在你的特定情况下,如果至less有一个元素(即使是“空”值empty()
构造将始终返回true
。
你也可以通过做检查。
if(count($array) > 0) { echo 'Error'; } else { echo 'No Error'; }
如果没有元素,请尝试使用sizeof
检查它的大小。
PHP内置的empty()函数检查variables是否为空,空,假或零表示。 它不会因为与数组条目相关联的值为false而返回true,在这种情况下,数组中包含实际元素,这就是所有的评估。
如果您想检查关联数组中是否有特定的错误条件设置为true ,则可以使用array_keys()函数过滤其值设置为true的键。
$set_errors = array_keys( $errors, true );
然后你可以使用empty()函数来检查这个数组是否为空,同时告诉你是否有错误以及发生了哪些错误。
零元素数组转换为false
然而,空($错误)仍然返回true,即使没有设置。
这不是多么empty()
工作。 根据手册 ,它只会在空数组上返回true。 别的什么都没有意义。
从PHP文档:
如果var具有非空和非零值,则返回FALSE。
以下几点被认为是空的:
"" (an empty string) 0 (0 as an integer) 0.0 (0 as a float) "0" (0 as a string) NULL FALSE array() (an empty array) var $var; (a variable declared, but without a value in a class)
函数empty()
不能用于testing空数组! 例:
$a=array("",""); if(empty($a)) echo "empty"; else echo "not empty"; //this case is true
一个function是必要的:
function is_array_empty($a){ foreach($a as $elm) if(!empty($elm)) return false; return true; }
好吧,这是一个非常古老的问题:),但我发现这个线程search解决scheme,我没有find一个好的。
再见(对不起,我的英文)
<?php if(empty($myarray)) echo"true"; else echo "false"; ?>
在PHP中,即使数组中的单个项目或对象的属性为空,数组或对象也不会使用empty($subject)
函数计算为空。 换句话说,将一堆单独testing为“空”的数据拼凑在一起会创build一个非空的组合。 使用以下PHP函数来确定数组中的项目或对象的属性是否为空:
function functionallyEmpty($o) { if (empty($o)) return true; else if (is_numeric($o)) return false; else if (is_string($o)) return !strlen(trim($o)); else if (is_object($o)) return functionallyEmpty((array)$o); // If it's an array! foreach($o as $element) if (functionallyEmpty($element)) continue; else return false; // all good. return true; }
用法示例:
$subject = array('', '', ''); empty($subject); // returns false functionallyEmpty($subject); // returns true class $Subject { a => '', b => array() } $theSubject = new Subject(); empty($theSubject); // returns false functionallyEmpty($theSubject); // returns true
嗨数组是一个对象,所以它是空的types或空白
<?php if($error!=null) echo "array is blank or null or not array"; //OR if(!empty($error)) echo "array is blank or null or not array"; //OR if(is_array($error)) echo "array is blank or null or not array"; ?>
我不能复制(PHP 5.3.6):
php > $error = array(); php > $error['something'] = false; php > $error['somethingelse'] = false; php > var_dump(empty($error)); bool(false) php > $error = array(); php > var_dump(empty($error)); bool(true) php >
你究竟在哪里empty()
调用返回true?