【发布时间】:2017-03-06 22:29:01
【问题描述】:
我有一堆布尔变量。一些变量可能是 TRUE,而其他变量可能是 FALSE。对于这个例子,我将有十个 (10) 变量:
//Variables
$a $b $c $d $e $f $g $h $i $j;
目标是在两个或多个变量为真时测试和执行代码。如果我为每个可能的变量组合声明一个条件,if 语句将变得冗长且不可维护。
//Condition Example
if ( ($a && $b) ||
($a && $c) ||
($a && $d) ||
($a && $e) ||
($a && $f) ||
($a && $g) ||
($a && $h) ||
($a && $i) ||
($a && $j) ||
($b && $c) ||
($b && $d) ||
($b && $e) ||
($b && $f) ||
($b && $g) ||
(etc.) ){
//DO something
}
如何测试是否有 2 个或更多变量为 TRUE?
编辑/添加:
感谢您的回答。使用 PHP 的 array_filter() 似乎在不同的情况下表现最好。出于好奇,我测试了@AbraCadaver 和@Chizzle 答案的性能。
低值(数组值 5 和 10 的 1000 为真)
count(array_filter($array)) : Execution time = 0.00319
array_sum($array) : Execution time = 0.00369
implode($array) : Execution time = 0.02098
foreach($array) : Execution time = 0.00939
中间值(数组值 1000 中的 400 和 500 为真)
count(array_filter($array)) : Execution time = 0.00247
array_sum($array) : Execution time = 0.00340
implode($array) : Execution time = 0.01091
foreach($array) : Execution time = 1.00006
高值(数组值 950 和 1000 的 1000 为真)
count(array_filter($array)) : Execution time = 0.00250
array_sum($array) : Execution time = 0.00329
implode($array) : Execution time = 0.01089
foreach($array) : Execution time = 1.02739
【问题讨论】:
标签: php if-statement logic conditional-statements