繁体   English   中英

计算循环内特定值的出现次数

[英]Count the number of occurences of a particular value inside loop

在数组计数全部为true的情况下,类别为1时,类别将移至2 thn计数全部为真,依此类推?

数组生成:

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
)

未经测试,但我相信这是您的追求(有任何小错误):

foreach($_POST as $key => $data)
{
    $a = explode("_", $key);

    $f[$a[1]]['category'] = $a[1];

    if ($data == "true") {
        $f[$a[1]]['answer']++;
    }
}

这是解决方案:

$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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM