2015-09-17 2 views
0

Привет, ребята, я застрял для такого рода объединения массивов:Объединение 2D массив с помощью ID - PHP

Sample Массив

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' 
        ) 
     ) 
) 

Как могу ли я сделать такое слияние? Спасибо заранее.

+0

использовать ['array_merge_recursive'] (http://php.net/manual/en/function.array-merge-recursive.php) –

+0

Кажется, хороший вопрос, который я пробовал, но не могу решить. –

+0

Вы что-то пробовали? – Rizier123

ответ

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 [$ массив [ "ID"]] [ "задачи" ] [] = $ array ["task"] ;, сделал снова редактирование

+0

Это решило мою проблему! Благодаря! –

+0

добро пожаловать;) – swidmann

Смежные вопросы