我的控制器操作中的代码:
$model = ExamsExamResults::find()->where(['student_id'=>$student_id, 'exam_short_code'=>$test])->all();
$model = ArrayHelper::map($model, 'component_name','obt_marks', 'subject_code');
json_encode($model);
给我以下输出:
{
"002": {
"Written": 15
},
"004": {
"Practical": 45
},
"005": {
"Practical": 45,
"Written": 45
}
}
我想为每个obt_marks
添加subject_code
,以便获得类似于以下内容的输出
{
"002": {
"marks": 15
},
"004": {
"marks": 45
},
"005": {
"marks": 90, //45+45
}
}
this问题提供了一些提示,但我认为Yii社区将受益于知道如何以更Yii2方式做(但仍然欢迎纯PHP解决方案)。
答案 0 :(得分:1)
对于纯PHP中的解决方案,您可以使用以下内容快速总结所有内容
$model = ArrayHelper::map($model, 'component_name','obt_marks', 'subject_code');
$output = [];
foreach($model as $k => $v) {
$output[$k]['marks'] = array_sum($v);
}
输出:
Array
(
[002] => Array
(
[marks] => 15
)
[004] => Array
(
[marks] => 45
)
[005] => Array
(
[marks] => 90
)
)