[英]Create new array from a multidimensional if some values are similar in php?
I have an array like below我有一个像下面这样的数组
Array (
[0] => Array ( [subj_title] => A, [value] => 0 )
[1] => Array ( [subj_title] => B, [value] => 30 )
[2] => Array ( [subj_title] => C, [value] => 6 )
[3] => Array ( [subj_title] => C, [value] => 8 )
[4] => Array ( [subj_title] => C, [value] => 5 )
[5] => Array ( [subj_title] => C, [value] => 11 )
)
I would like this array to be like below我希望这个数组如下所示
Array (
[0] => Array ( [subj_title] => A, [value] => 0 )
[1] => Array ( [subj_title] => B, [value] => 30 )
[2] => Array ( [subj_title] => C, [value] => 30 ) //Sum of value C
)
Trying to find the simplest way to do this, I am kind of messing up with my code.试图找到最简单的方法来做到这一点,我有点搞砸了我的代码。 Please refer the work请参考作品
$old_subj_title = $subj_title = '';
$j_subjects = $j_subject = [];
foreach($subjects_display as $r) {
$subj_title = !empty($r->subj_title) ? $r->subj_title : '';
if(!empty($subj_title) && $old_subj_title != $subj_title) {
$j_subject['subj_title'] = $subj_title;
$j_subject['value'] = $r->marks;
}
if($old_subj_title == $subj_title) {
//something can be done
}
$j_subjects[] = $j_subject;
$old_subj_title = $subj_title;
}
print_r($j_subjects);
Output:
Array (
[0] => Array ( [subj_title] => A, [value] => 0 )
[1] => Array ( [subj_title] => B, [value] => 30 )
[2] => Array ( [subj_title] => C, [value] => 6 ) //Single entry of same title
)
You can try the below code你可以试试下面的代码
$data = array (
array ('subj_title' => 'A', 'value' => 0 ) ,
array ('subj_title' => 'B', 'value' => 30 ) ,
array ('subj_title' => 'C', 'value' => 6 ) ,
array ('subj_title' => 'C', 'value' => 8 ) ,
array ('subj_title' => 'C', 'value' => 5 ),
array ('subj_title' => 'C', 'value' => 11 )
);
$result = array();
foreach($data as $key => $value){
$index = $value['subj_title'];
// Create a new sub array with key as subj_title
if(!isset($result[$index])){
$result[$index]['subj_title'] = $value['subj_title'];
$result[$index]['value'] = $value['value'];
}else{
// If subarray already exists then values get added
$result[$index]['value'] = $result[$index]['value'] + $value['value'];
}
}
$result = array_values($result);
echo '<pre>';
print_r($result);
If you are fetching the data using SQL query, You can use GROUP BY to achive the result directly from database as follow如果您使用 SQL 查询获取数据,您可以使用 GROUP BY 直接从数据库中获取结果,如下所示
SELECT subj_title, SUM(value) as value FROM yourTable
GROUP BY subj_title
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.