1

値が True に設定されている配列要素をカウントする最も効率的な方法を知りたいです。

これは私の試みですが、コードが長くなります。組み込み関数が既にあるか、よりスマートな方法で実行できるかどうか疑問に思っています。この場合、$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;
4

1 に答える 1

0

複雑になるので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

==配列が常にtrue/false値のみを保持すると仮定すると、取得する必要がある場合は問題ないかもしれません。

于 2012-08-30T08:29:12.330 に答える