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

Rya*_*yan 16 php

我们举一些例子:

array("Paul", "", "Daniel") // false
array("Paul", "Daniel") // true
array("","") // false
Run Code Online (Sandbox Code Playgroud)

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

Jac*_*och 28

尝试使用in_array:

return !in_array("", array("Paul", "", "Daniel")); //returns false
Run Code Online (Sandbox Code Playgroud)

  • @stereofrog看一下PHP文档,除非你传递`true`作为第三个参数,`in_array`会做一个松散的比较,所以它会给`array("Paul",0,"Daniel"提供相同的结果")`,`array("Paul","","Daniel")`或`array("Paul",false,"Daniel")`.因此,如果op只想匹配空字符串,他可以将`true`作为第三个参数传递. (3认同)

use*_*291 23

答案取决于你如何定义"空"

$contains_empty = count($array) != count(array_filter($array));
Run Code Online (Sandbox Code Playgroud)

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

$contains_empty = count($array) != count(array_filter($array, "strlen"));
Run Code Online (Sandbox Code Playgroud)

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

$contains_empty = in_array("", $array, true);
Run Code Online (Sandbox Code Playgroud)


Ham*_*edi 8

因此array_filter()将从数组中删除空元素,然后返回该数组。

将返回的数组与原始数组进行比较不会相同。
表示数组包含一个或多个空元素。

$array = array("Paul", "", "Daniel");
if($array != array_filter($array)) {
    echo "Array contains empty values.";
}
Run Code Online (Sandbox Code Playgroud)


Moh*_*lah 5

function has_empty(array $array)
{
    return count($array) != count(array_diff($array, array('', null, array())));
}
Run Code Online (Sandbox Code Playgroud)