我正在使用PHP,有一个数组,看起来像这样:

我正在使用PHP,有一个数组,看起来像这样:,php,arrays,multidimensional-array,foreach,merge,Php,Arrays,Multidimensional Array,Foreach,Merge,如您所见,它们是主数组中的某个suject元素,我希望将所有subject元素合并到同一数组中,如下所示 Array ( [0] => Array ( [gr_number] => 1 [batch] => A [maths] => 80/100 [english] => 80/100 [science] => 80/

如您所见,它们是主数组中的某个suject元素,我希望将所有subject元素合并到同一数组中,如下所示

Array
(
    [0] => Array
        (
            [gr_number] => 1
            [batch] => A
            [maths] => 80/100
            [english] => 80/100
            [science] => 80/100
            [hindi] => 80/100
            [computer] => 80/100
            [socialscience] => 85/100
        )

    [1] => Array
        (
            [gr_number] => 2
            [batch] => A
            [maths] => 80/100
            [english] => 80/100
            [science] => 80/100
            [hindi] => 80/100
            [computer] => 80/100
            [socialscience] => 86/100
        )

    [2] => Array
        (
            [gr_number] => 3
            [batch] => A
            [maths] => 80/100
            [english] => 80/100
            [science] => 80/100
            [hindi] => 80/100
            [computer] => 80/100
            [socialscience] => 87/100
        )

)

您只需在
foreach
循环中添加一个新元素
result\u details
,其中包含来自其他元素的组合值,然后取消设置不需要的元素:

Array
(
    [0] => Array
        (
            [gr_number] => 1
            [batch] => A
            [result_details] => maths : 80/100,english:80/100,science:80/100,hindi:80/100,computer:80/100,socialscience:85/100;
        )

    [1] => Array
        (
            [gr_number] => 2
            [batch] => A
            [result_details] => maths : 80/100,english:80/100,science:80/100,hindi:80/100,computer:80/100,socialscience:85/100;  
      )

    [2] => Array
        (
            [gr_number] => 3
            [batch] => A
            [result_details] => maths : 80/100,english:80/100,science:80/100,hindi:80/100,computer:80/100,socialscience:85/100;  
        )

)

您可以将
array\u map
array\u diff\u key
array\u intersect\u key
结合使用。 不知怎的,是这样的:

foreach($arr as &$val){
    $val['result_details']='maths:'.$val['maths'].',english:'.$val['english'].',science:'.$val['science'].',hindi:'.$val['hindi'].',computer:'.$val['computer'].',socialscience:'.$val['socialscience'];
    unset($val['maths'],$val['english'],$val['science'],$val['science'],$val['hindi'],$val['computer'],$val['socialscience']);
}

您必须将
array\u reduce
()与
array\u map
()结合使用。主题是静态的吗?每个数组中有相同的6个主题?
$keys = array('gr_number', 'batch');
$excludes = array_combine($keys, array_fill(0, count($keys), 0));
$result = array_map(
    function ($arr) use($excludes) {
        $ret = array_intersect_key($arr, $excludes);
        $arr = array_diff_key($arr, $excludes);
        $ret['result_details'] = implode(', ', array_map(
            function ($v1, $v2) { return "$v1:$v2"; },
            array_keys($arr), array_values($arr)
        ));
        return $ret;
    },
    $array
);