[php] 检查数组是否为空


5 Answers

你也可以通过做检查。

if(count($array) > 0)
{
    echo 'Error';
}
else
{
    echo 'No Error';
}
Question

这个问题在这里已经有了答案:

我有以下代码

<?php

$error = array();
$error['something'] = false;
$error['somethingelse'] = false;

if (!empty($error))
{
    echo 'Error';
}
else
{
    echo 'No errors';
}

?>

然而,即使没有设置, empty($error)仍然会返回true

什么不对?




在PHP中,即使数组中的单个项目或对象的属性为空,数组或对象也不会使用empty($subject)函数评估为空。 换句话说,将一组单独测试为“空”的数据拼凑在一起会创建一个非空的组合。 使用以下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



然而,即使没有设置,空($ error)仍然会返回true。

这不是empty()工作方式。 根据manual ,它只会在数组上返回true。 其他任何东西都没有意义。




PHP内置的empty()函数检查变量是否为空,空,假或零表示。 它不会因为与数组条目相关联的值为false而返回true,在这种情况下,数组中包含实际元素,这就是所有的评估结果。

如果您想检查关联数组中是否有特定错误条件设置为true ,则可以使用array_keys()函数过滤其值设置为true的键。

$set_errors = array_keys( $errors, true );

然后你可以使用empty()函数来检查这个数组是否为空,同时告诉你是否有错误以及发生了哪些错误。




我无法复制(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?




函数empty()不适用于测试空数组! 例:

$a=array("","");
if(empty($a)) echo "empty";
else echo "not empty"; //this case is true

一个功能是必要的:

function is_array_empty($a){
foreach($a as $elm)
if(!empty($elm)) return false;
return true;
}

好吧,这是一个非常古老的问题:),但我发现这个线程寻找解决方案,我没有找到一个好的。

再见(对不起,我的英语)




Related



Tags

php php   arrays