通过添加元素来合并具有yii2模型的相同键的元素

时间:2016-06-30 02:19:35

标签: php yii2

我的控制器操作中的代码:

$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解决方案)。

1 个答案:

答案 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
        )

)