Tha*_*Guy 11 php arrays associative-array if-statement count
我有一个关联数组,我需要计算其中布尔值的数量.
最终结果是创建一个if语句,当数组中只存在一个true值时,该语句将返回true.如果数组中有多个真值,或者数组中没有真值,则需要返回false.
我知道最好的路线是以某种形式使用count和in_array.我不确定这会起作用,只是在我的头顶,但即使它确实如此,这是最好的方法吗?
$array(a->true,b->false,c->true)
if (count(in_array(true,$array,true)) == 1)
{
return true
}
else
{
return false
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*uhn 37
我会使用array_filter.
$array = array(true, true, false, false);
echo count(array_filter($array));
//outputs: 2
Run Code Online (Sandbox Code Playgroud)
http://codepad.viper-7.com/ntmPVY
Array_filter将删除false-y(value == false)的值.然后得到一个计数.如果需要根据某些特殊值进行过滤,例如,如果要查找特定值,则array_filter接受可选的第二个参数,该参数是您可以定义的函数,用于返回值是true(未过滤)还是false(过滤掉) ).
由于TRUE被转换为1而FALSE被转换为0.您还可以使用array_sum
$array = array('a'=>true,'b'=>false,'c'=>true);
if(array_sum($array) == 1) {
//one and only one true in the array
}
Run Code Online (Sandbox Code Playgroud)
从文档:"FALSE将产生0(零),而TRUE将产生1(一)."