我们举一些例子:
array("Paul", "", "Daniel") // false
array("Paul", "Daniel") // true
array("","") // false
解决这个功能的巧妙方法是什么?
答案 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):
}