在PHP中计算具有真值的多维数组元素

在PHP中计算具有真值的多维数组元素,php,arrays,count,Php,Arrays,Count,我想知道计算值设置为真的数组元素的最有效方法 这是我的尝试,但是代码有点长。我想知道是否有一个内置的功能,它已经或可以在一个更智能的方式完成。在本例中,我想知道$arr['key'][uniquekeyname]['check']中具有true的元素的数量 $arr = array(); $arr['keys'] = array( 'a' => array('check' => true, 'otherinfo' => 'some data'), 'b' =&

我想知道计算值设置为真的数组元素的最有效方法

这是我的尝试,但是代码有点长。我想知道是否有一个内置的功能,它已经或可以在一个更智能的方式完成。在本例中,我想知道$arr['key'][uniquekeyname]['check']中具有true的元素的数量

$arr = array();
$arr['keys'] = array(
    'a' => array('check' => true,  'otherinfo' => 'some data'),
    'b' => array('check' => false, 'otherinfo' => 'some data'),
    'c' => array('check' => false, 'otherinfo' => 'some data'),
    'd' => array('check' => true,  'otherinfo' => 'some data'),
);

$numChecked = 0;
foreach($arr['keys'] as $key) {
    if ($key['check']) 
        $numChecked++;          
}

echo $numChecked;

复杂性将是
O(n)
,因此循环通过它就可以了

我注意到,您可能希望使用三重相等运算符
==
,以便将数组的元素与
true
进行比较,因为将字段检查设置为另一个值将按现在或
=
进行计数

 'b' => array('check' => 150, 'otherinfo' => 'some data'),
将输出:

 3
鉴于:

$numChecked = 0;
foreach($arr['keys'] as $key) {
    if ($key['check'] === true) 
        $numChecked++;          
}

echo $numChecked;
我会帮你的

2

假设您的数组总是只携带真/假值,那么获取
==
可能符合您的需要。

这也可以通过map reduce实现,但对于现在了解map reduce工作原理的人来说,这更直观。请参阅php中的
array\u map()
array\u reduce()
函数。