我有一个数组,我想找出其中是否至少有一个false值。我在考虑创建一个array_and()函数,它只对所有元素执行逻辑AND运算。如果所有值都为true,则返回true,否则返回false。我是不是过于工程化了?
发布于 2010-12-01 04:00:59
为什么不直接使用
in_array -检查值是否存在于数组中
示例:
// creates an array with 10 booleans having the value true.
$array = array_fill(0, 10, TRUE);
// checking if it contains a boolean false
var_dump(in_array(FALSE, $array, TRUE)); // FALSE
// adding a boolean with the value false to the array
$array[] = FALSE;
// checking if it contains a boolean false now
var_dump(in_array(FALSE, $array, TRUE)); // TRUE发布于 2010-12-01 04:03:05
如果所有值都为true,则返回true,否则返回false。
如果数组不为空且不包含假元素,则返回true:
function array_and(arary $arr)
{
return $arr && array_reduce($arr, function($a, $b) { return $a && $b; }, true));
}(请注意,如果要针对false类型进行测试,则需要进行严格的比较。)
我是不是太过工程化了?
是的,因为您可以使用:
in_array(false, $arr, true);发布于 2010-12-01 04:01:07
原则上,这没有什么错,只要您不对所有值进行不加区别的操作;也就是说,只要找到第一个false,就应该立即终止:
function array_and(array $array)
{
foreach ($array as $value)
{
if (!$value)
{
return false;
}
}
return true;
}https://stackoverflow.com/questions/4317925
复制相似问题