检查数组是否为空

我有以下代码

<?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()函数的默认行为将从数组中删除所有等于null0''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()函数来检查这个数组是否为空,同时告诉你是否有错误以及发生了哪些错误。

然而,空($错误)仍然返回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?