提问者:小点点

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


我有两个结构如下的数组

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'

但我不明白如何将“total”数组的值附加到“main”数组的值上。 你能告诉我该往哪个方向走吗?


共2个答案

匿名用户

您可以只映射主数组并推入其元素的和:

$array['main'] = array_map(static function($counts) {
    return array_merge($counts, [array_sum($counts)]);
}, $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)
    }
  }

匿名用户

如果您只需要移动这两个属性,这应该是一个简单的解决方案:

$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'];

如果需要的话,您应该能够扩展它以覆盖更多的年份,或者最终编写一个循环来管理您所需要的所有年份。