检查数组是否有一个或多个空值

时间:2011-04-30 20:48:53

标签: php arrays

我有数组$ var,如果数组中的一个或多个元素为空(我的意思是,字符串是“”),我想返回FALSE。

我认为array_filter()是更好的方式,但我不知道如何以这种方式过滤它。

我该怎么做?

5 个答案:

答案 0 :(得分:22)

function emptyElementExists()

function emptyElementExists($arr) {
  return array_search("", $arr) !== false;
  }

示例:

$var = array( "text1", "", "text3" );
var_dump( emptyElementExists($var) );

<强>输出:

  

BOOL(真)

<强>参考

答案 1 :(得分:9)

if (array_search('', $var)!==false) return FALSE;

答案 2 :(得分:1)

如果你想要一个检查数组中的项是否为假的函数,你可以编写自己的函数:

  • 通过数组迭代
  • 对于每个周期检查当前项目值是否为“”
  • 如果值不是“”下一个循环
  • 如果值为“”,则返回False

array_filter接受一个数组和一个函数,然后遍历数组并发送指定函数中的每个项目。如果函数返回true,则该项保存在数组中,如果函数返回false,则该项将从数组中取出。

你看到了区别,对吗?

答案 3 :(得分:1)

或明确地,如@Ancide所建议的那样:

$var = array("lorem", "ipsum", "dolor");
$emptyVar = array("lorem", "", "dolor");

function has_empty($array) {
    foreach ($array as $value) {
        if ($value == "")
            return true;
    }
    return false;
}

echo '$var has ' . (has_empty($var) ? 'empty values' : 'no empty values');
echo '<br>';
echo '$emptyVar has ' . (has_empty($emptyVar) ? 'empty values' : 'no empty values');

修改

我一开始并不确定array_search()是否会在第一次出现时停止。验证PHP's source后,array_search()方法似乎应该更快(更短)。因此,我认为 @ Wh1T3h4Ck5 的版本会更好。

答案 4 :(得分:0)

如果你真的想检查一个或多个空字符串是否存在,那很简单。你可以,

in_array('', $var, true);

如果空字符串('')至少存在于任何一个数组值中,则返回true,否则返回false。 你也可以参考这个类似的问题, how to check if an array has value that === null without looping?