计算循环中某个特定值的出现次数


Count the number of occurences of a particular value inside loop

在数组中count all true,其中category为1,计数后该类别将移动到2 thn count all true?

生成的阵列:

foreach($_POST as $key => $data)
{
    $a = explode("_", $key);
    $f = array(
        'category' => $a[1],
        'answer' => $data
    );
   $f_data[] = $f;
}

来自

Array
(
    [0] => Array
        (
        )
    [1] => Array
        (
            [category] => 1
            [answer] => true
        )
    [2] => Array
        (
            [category] => 1
            [answer] => true
        )
    [3] => Array
        (
            [category] => 1
            [answer] => true
        )
    [4] => Array
        (
            [category] => 1
            [answer] => false
        )
    [5] => Array
        (
            [category] => 1
            [answer] => false
        )
    [6] => Array
        (
            [category] => 1
            [answer] => true
        )
    [7] => Array
        (
            [category] => 1
            [answer] => true
        )
    [8] => Array
        (
            [category] => 2
            [answer] => true
        )
    [9] => Array
        (
            [category] => 2
            [answer] => true
        )
    [10] => Array
        (
            [category] => 2
            [answer] => true
        )
    [11] => Array
        (
            [category] => 2
            [answer] => false
        )
    [12] => Array
        (
            [category] => 2
            [answer] => true
        )
    [13] => Array
        (
            [category] => 2
            [answer] => true
        )
)

array (
   category: 1,
   count: 5
),
array(
  category: 2,
  count: 5
)

这就是解决方案:

$return = array();
foreach($cont as $item) {
    if($item['answer'] == 'true') {
        $verify = false;
        foreach($return as $key => $value) {
            if($value['category'] == $item['category']) {
                $return[$key]['count']++;
                $verify = true;
                break;
            }    
        }
        if(!$verify)
             $return[] = array('category' => $item['category'], 'count' => 1);
    }
}

这是更好的解决方案。。。

$return = array();
foreach($cont as $item) {
    if($item['answer'] == 'true') {
        if(array_key_exists($item['category'], $return))
            $return[$item['category']]++;
        else    
            $return[$item['category']] = 1;
    }
}

未测试,但我相信这就是你想要的(等待任何小错误):

foreach($_POST as $key => $data)
{
    $a = explode("_", $key);
    $f[$a[1]]['category'] = $a[1];
    if ($data == "true") {
        $f[$a[1]]['answer']++;
    }
}