数组AND()?所有元素的逻辑AND

use*_*841 7 php arrays boolean-logic

我有一个数组,我想知道它中是否至少有一个假值.我正在考虑创建一个array_and()函数,它只对所有元素执行逻辑AND.如果所有值都为真,则返回true,否则返回false.我是否过度工程?

Gor*_*don 12

你为什么不用

  • 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
Run Code Online (Sandbox Code Playgroud)


Mat*_*hew 5

如果所有值都为 true,则返回 true,否则返回 false。

如果数组非空且不包含 false 元素,则返回 true:

function array_and(arary $arr)
{
  return $arr && array_reduce($arr, function($a, $b) { return $a && $b; }, true));
}
Run Code Online (Sandbox Code Playgroud)

(请注意,如果您想针对该false类型进行测试,则需要严格比较。)

我是否过度设计了?

是的,因为你可以使用:

in_array(false, $arr, true);
Run Code Online (Sandbox Code Playgroud)