php 如何检查数组是否包含空元素?[副本]

gwbalxhn  于 2023-05-16  发布在  PHP
关注(0)|答案(7)|浏览(166)

此问题已在此处有答案

How do I check if array contains at least one empty value?(8个回答)
7个月前关闭。
让我们举几个例子:

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

有什么简单的方法可以绕过这个函数呢?

wh6knrhe

wh6knrhe1#

尝试使用in_array

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

smdncfj32#

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

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

这检查布尔意义上的空元素。检查空字符串或等效项

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

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

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

lsmd5eda3#

所以array_filter()将从数组中删除空元素,然后返回这个数组。
将返回的数组与原始数组进行比较将不相同。
这意味着数组包含一个或多个空元素。

$array = array("Paul", "", "Daniel");
if($array != array_filter($array)) {
    echo "Array contains empty values.";
}
ltqd579y

ltqd579y4#

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

j91ykkif5#

function testEmpty($array) {
  foreach ($array as $element) {
    if ($element === '')
      return false;
  }
  return true;
}

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

xiozqbni

xiozqbni6#

不完全是这个问题的答案,但许多游客来到这里是为了寻找这个略有不同的案例的解决方案:

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

这是一个简单的解决方案,使用implode(),可以满足某些需求。

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

z5btuh9x7#

因为我喜欢一些花哨的匿名函数,这里是我对它的看法。不确定性能,但它是:

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

return (bool) count($filter);

合乎逻辑地解释。如果anonymous返回true,则意味着它找到了一个空值。这意味着过滤器数组在末尾只包含空值(如果有的话)。
这就是为什么返回使用count函数检查过滤器数组是否有值。
(bool)类型转换等价于return count($filter) === 0
愿你们都能找到自己想要的幸福。

相关问题