让我们举几个例子:
array("Paul", "", "Daniel") // false
array("Paul", "Daniel") // true
array("","") // false
围绕这个功能,有什么巧妙的方法?
尝试使用in_array
:
return !in_array("", array("Paul", "", "Daniel")); //returns false
答案取决于如何定义"空">
$contains_empty = count($array) != count(array_filter($array));
这将检查布尔意义上的空元素。检查空字符串或等效
$contains_empty = count($array) != count(array_filter($array, "strlen"));
只检查空字符串(注意第三个参数(:
$contains_empty = in_array("", $array, true);
因此array_filter()
将从数组中移除空元素,然后返回此数组。
将返回的数组与原始数组进行比较将不相同
意味着数组包含一个或多个空元素。
$array = array("Paul", "", "Daniel");
if($array != array_filter($array)) {
echo "Array contains empty values.";
}
function has_empty(array $array)
{
return count($array) != count(array_diff($array, array('', null, array())));
}
function testEmpty($array) {
foreach ($array as $element) {
if ($element === '')
return false;
}
return true;
}
请查看下面的评论以了解更多信息。
不是这个问题的确切答案,但许多访问者来到这里是为了寻找这个略有不同的情况的解决方案:
检查,如果数组仅包含空字符串
这将是一个简单的implode()
解决方案,适合的一些需求
function testIfEmpty($array) {
$flat = implode('', $array);
return !empty($flat):
}
由于我确实喜欢一些花哨的匿名函数,下面是我对它的看法。不确定性能,但它是:
$filter = array_filter(
["Paul", "", "Daniel"],
static function ($value) {
return empty($value); // can substitute for $value === '' or another check
}
);
return (bool) count($filter);
逻辑解释。如果匿名返回true,则表示它找到了一个空值。这意味着过滤器数组的末尾将只包含空值(如果有(。
这就是为什么返回使用count
函数检查过滤器数组是否有值的原因。
(bool)
类型的强制转换等效于return count($filter) === 0
。
愿你们都能找到你们所追求的幸福。