计算php中数组的元素

I have a problem with my count, please help me.

I have an array :

Array
(
    [0] => Array
        (
            [message] => non
            [msg_cnt] => 1
        )

    [1] => Array
        (
            [message] => oui
            [msg_cnt] => 1
        )

    [2] => Array
        (
            [message] => non
            [msg_cnt] => 1
        )

    [3] => Array
        (
            [message] => oui
            [msg_cnt] => 1
        )
    [4] => Array
        (
            [messsage] => yuop
            [msg_cnt]  => 1

)

Now I want to get :

Array
(
    [0] => Array
        (
            [message] => non
            [msg_cnt] => 2
        )

    [1] => Array
        (
            [message] => oui
            [msg_cnt] => 2
        )
    [2] => Array
        (
            [message] => youp
            [msg_cnt] => 1

)

I tried my code but I didn't get a good result :

for($i=0;$i<count($aResultQuery);$i++){
        if($aResultQuery[$i]['messsage'] == $aResultQuery[$i+1]['messsage']){
            $aResultQuery[$i+1]['msg_cnt']++;
            unset($aResultQuery[$i]);
        }
    }

Please help me. Let me know, if the is a solution to fetch this array?

You could use another container to merge the counts, set an initial value of each one of them, them sum them up the rest of the loop. Example:

$count = array();
foreach($aResultQuery as $values) {
    if(!isset($count[$values['message']])) {
        $count[$values['message']] = array('message' => $values['message'], 'msg_cnt' => 0);
    }
    $count[$values['message']]['msg_cnt'] += $values['msg_cnt'];
}

$count = array_values($count); // simple reindex

echo '<pre>';
print_r($count);

Sample Output

If I got your question this is what you want http://php.net/manual/en/function.array-count-values.php

$msg_to_count = array_reduce($arr, function($memo, $el) {
  if (array_key_exists($el['message'], $memo))) {
    $memo[$el['message']] += $el['msg_cnt']
  } else {
    $memo[$el['message']] = $el['msg_cnt']
  }
return $memo;
}, array());

The above will produce array message ⇛ count. Whether you need to turn back to array of elelements like they were, it might be done with simple iteration:

$result = []
foreach($msg_to_count as $k=>$v) {
  $result[] = array('message' => $k, 'count' => $v);
}

Check this if not let me know further

<?php
        function array_count($array,$val) {
          $count = 0;
            foreach ($array as $k => $v) {
                if($v['message'] == $val){
                  $count = $v['msg_cnt'] + $count;
                }
            }
            return $count;
        }

        $temp =array(
          array('message'  => 'non', 'msg_cnt' => 1),
          array('message' => 'non', 'msg_cnt' => 1),
          array('message' => 'non', 'msg_cnt' => 2),
          array('message' => 'oui', 'msg_cnt' => 1 ),
          array('message' => 'non','msg_cnt'  => 1)
        );

        $final = array();
        foreach ($temp as $value) {
          if(!array_key_exists($value['message'], $final)){
            $final[$value['message']] = array_column($temp, $value['message']);
          }
        }

        echo '<pre>';
        print_r($final);
        echo '</pre>';
        exit();

        ?>