如何将一个数组中的元素合并到另一个数组中?

我有两个具有以下结构的数组


array

  'main' => array

     'firstYearStudents' => array

        0 => '10'

        1 => '12'


     'secondYearStudents' => array

        0 => '8'

        1 => '9'


  'total' => array

     'totalFirstYear' => '22'

     'totalSecondYear' => '17'


但我想得到以下一个


array

  'main' => array

     'firstYearStudents' => array

        0 => '10'

        1 => '12'

        2 => '22'


     'secondYearStudents' => array

        0 => '8'

        1 => '9'

        2 => '17'

但我不明白如何将“总”数组中的值附加到“主”数组中的值。你能告诉我应该朝哪个方向移动吗?


编辑:如果我有以下键以及上述键怎么办?


array

  'main' => array

     'firstYearStudents' => array

        0 => '10'

        1 => '12'


     'secondYearStudents' => array

        0 => '8'

        1 => '9'


     'programCode' => array

        0 => '03.02.01'

        1 => '03.01.01'


  'total' => array

     'totalFirstYear' => '22'

     'totalSecondYear' => '17'

     'programCode' => '-'


那么所需的结构应该是这个样子


array

  'main' => array

     'firstYearStudents' => array

        0 => '10'

        1 => '12'

        2 => '22'


     'secondYearStudents' => array

        0 => '8'

        1 => '9'

        2 => '17'


     'programCode' => array

        0 => '03.02.01'

        1 => '03.01.01'

        2 => '-'

我尝试了以下方法,但我得到了命名的密钥,所以我无法访问这些密钥。


$i = 0;

foreach ($studentsEditInfo['main'] as $values) {

    $studentsEditInfo['main'] = array_merge($values, $studentsEditInfo['total'][$i]);

    $i++;

}


元芳怎么了
浏览 149回答 2
2回答

沧海一幻觉

您可以只映射主数组并推送其元素的总和:$array['main'] = array_map(static function($counts) {    $sum = ctype_digit(implode('', $counts)) ? array_sum($counts) : '-';    return array_merge($counts, [$sum]);}, $array['main']);密钥的值main将是您实际需要的:array(2) {    ["firstYearStudents"]=>    array(3) {      [0] => int(10)      [1] => int(12)      [2] => int(22)    }    ["secondYearStudents"]=>    array(3) {      [0] => int(8)      [1] => int(9)      [2] => int(17)    }    ["programCode"]=>    array(3) {      [0] => string(8) "03.02.01"      [1] => string(8) "03.01.01"      [2] => string(1) "-"    }}

回首忆惘然

如果您只需要移动这两个属性,这应该是一个简单的解决方案:$data = [    'main' => [        'firstYearStudents' => [            '10',            '12'        ],        'secondYearStudents' => [            '8',            '9'        ]    ],    'total' => [        'totalFirstYear' => '22',        'totalSecondYear' => '17'    ]];$data['main']['firstYearStudents'][] = $data['total']['totalFirstYear'];$data['main']['secondYearStudents'][] = $data['total']['totalSecondYear'];如有必要,您应该能够扩展它以涵盖更多年,或者最终编写一个循环来管理您需要的年数。
打开App,查看更多内容
随时随地看视频慕课网APP