如何检查数组是否包含空元素?

时间:2011-07-08 08:08:50

标签: php

我们举一些例子:

array("Paul", "", "Daniel") // false
array("Paul", "Daniel") // true
array("","") // false

解决这个功能的巧妙方法是什么?

7 个答案:

答案 0 :(得分:27)

尝试使用in_array

return !in_array("", array("Paul", "", "Daniel")); //returns false

答案 1 :(得分:23)

答案取决于你如何定义“空”

$contains_empty = count($array) != count(array_filter($array));

这将检查boolean sense中的空元素。检查空字符串或equivalents

$contains_empty = count($array) != count(array_filter($array, "strlen"));

仅检查空字符串(注意第三个参数):

$contains_empty = in_array("", $array, true);

答案 2 :(得分:4)

function has_empty(array $array)
{
    return count($array) != count(array_diff($array, array('', null, array())));
}

答案 3 :(得分:2)

$array = array("Paul", "", "Daniel") 
if( $array  != array_filter( $array ) ) 
return FALSE;

答案 4 :(得分:1)

function testEmpty($array) {
  foreach ($array as $element) {
    if (empty($element)) //edited from: if ($element === "")
      return false;
  }
  return true;
}

请查看以下评论​​以获取更多信息。

答案 5 :(得分:0)

因为我很喜欢我,所以我喜欢一些匿名函数。不确定性能,但是这里是:

$filter = array_filter(
        ["Paul", "", "Daniel"],
        static function ($value) {
            return empty($value); // can substitute for $value === '' or another check
        }
    );

return (bool) count($filter);

逻辑解释。如果匿名返回true,则表示它找到了一个空值。这意味着过滤器数组的末尾将仅包含空值(如果有的话)。

这就是为什么return使用count函数检查过滤器数组是否具有值的原因。

(bool)类型的强制转换等效于return count($filter) === 0

愿大家找到想要的幸福。

答案 6 :(得分:0)

不完全是问题的答案,但许多访问者来到这里是为了寻找这种稍微不同的情况的解决方案:

检查数组是否只包含空字符串

这将是一个带有 implode() 的简单解决方案,可以满足某些需求

function testIfEmpty($array) {
    $flat = implode('', $array);
    return !empty($flat):
}