Read elements from array in php
I have a problem with my account, 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 there is a solution to retrieve this array?
+3
source to share
4 answers
You can use a different container to combine the counters, initialize each one, and sum them over 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);
+1
source to share
$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 array will create an array message β count
. If you need to revert to an array of items such as these, this can be done with simple iteration:
$result = []
foreach($msg_to_count as $k=>$v) {
$result[] = array('message' => $k, 'count' => $v);
}
0
source to share
Check it if you don't tell me 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();
?>
0
source to share
If I have a question you want http://php.net/manual/en/function.array-count-values.php
-1
source to share