通过ID合并2D数组 - PHP

时间:2015-09-17 09:09:27

标签: php arrays

大家好,我因为这种数组合并而陷入困境:

示例数组

Array(
     [0] => Array(
            'id' => '1',
            'task' => 'Task 1.0'
         ),
     [1] => Array(
            'id' => '1',
            'task' => 'Task 1.1'
         ),
     [2] => Array(
            'id' => '2',
            'task' => 'Task 2.0'
         ),
     [3] => Array(
            'id' => '2',
            'task' => 'Task 2.1'
         )
)

预期结果

Array(
     [0] => Array(
            'id' => '1',
            'task' => array(
                      [0] => 'Task 1.0',
                      [1] => 'Task 1.1' 
                   )
         ),
     [1] => Array(
            'id' => '2',
            'task' => array(
                      [0] => 'Task 2.0',
                      [1] => 'Task 2.1' 
                   )
         )
)

我怎样才能进行这种合并? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

这可能不是最好的解决方案,但我认为这是一种方法:

$oldArray = array (
    0 => array(
           'id' => '1',
           'task' => 'Task 1.0'
        ),
    1 => array(
           'id' => '1',
           'task' => 'Task 1.1'
        ),
    2 => array(
           'id' => '2',
           'task' => 'Task 2.0'
        ),
    3 => array(
           'id' => '2',
           'task' => 'Task 2.1'
        )
);

$newArray = array();

foreach( $oldArray as $array ) {
    if( !isset( $newArray[$array["id"]] ) ) {
        $newArray[$array["id"]] = array( "id" => $array["id"] );
    }

    $newArray[$array["id"]]["task"][] = $array["task"];
}

// reset the temp keys
$newArray = array_values( $newArray );

编辑:忘记$ newArray中的“任务”[$ array [“id”]] [“task”] [] = $ array [“task”];,再次进行编辑