2017-08-03 40 views
0

我有幾個陣列,所有具有該結構:合併數組問題

array (
    526744 => 
    array (
    'completed' => 13, 
    'total' => 24, 
    'topics' => 
    array (
    ), 
    'lessons' => 
    array (
     526745 => 1, 
     526747 => 1, 
     526749 => 1, 
     526751 => 0, 
     526757 => 0, 
     526759 => 0, 
     526761 => 1, 
     526763 => 0, 
     526765 => 0, 
     526767 => 1, 
    ), 
    'last_id' => 526793, 
), 
    526818 => 
    array (
    'completed' => 0, 
    'total' => 22, 
    'topics' => 
    array (
    ), 
    'lessons' => 
    array (
     526819 => 0, 
     526821 => 1, 
     526823 => 1, 
     526845 => 0, 
     526847 => 1, 
     526849 => 1, 
     526859 => 1, 
     526861 => 1, 
    ), 
    'last_id' => 526861, 
), 
) 

在所述陣列的最外元件的數量是一個課程ID。最內層數組元素中的數字列表是課程ID。

我想合併所有包含這個結構的數組。但唯一與526744.

過程ID如果我做這樣的事情:

foreach($results2 as $result2) { 
    $new_array = unserialize($result2->course_progress); 
    $final_array = array_merge($final_array, $new_array); 
    $backup_array = $new_array; 
} 

這工作得很好,不過它把整個陣列,包括所有的課程。

但是,如果我指定這樣的COURSE_ID:

foreach($results2 as $result2) { 
    $new_array = unserialize($result2->course_progress); 
    $newarray = $new_array[526744]; 
    $final_array = array_merge($final_array, $new_array); 
    $backup_array = $new_array; 
} 

它不再合併可言,只是列出了用於指定1單門課程的最後一個陣列。

什麼是造成這種情況,以及如何解決它的任何想法?

感謝

+1

嘗試改變'$ newarray = $ new_array [526744];'到'$ newarray =陣列($ new_array [526744]);' – Glubus

+0

即完美, 謝謝。不知道如何將答案標記爲正確,因爲它是作爲評論輸入的。 – DanR

+0

我沒有打擾爲這樣一個簡單的解決方案創建答案,我們都犯了一個簡單的錯誤。我想其他人想要一些額外的點。 – Glubus

回答

0

我檢查你的代碼,並發現,你已經使用$new_array[526744]的問題,它是錯誤的。它應該是array($new_array[526744])

檢查這代碼:

foreach($results2 as $result2) { 
    $new_array = unserialize($result2->course_progress); 
    $newarray = array($new_array[526744]); 
    $final_array = array_merge($final_array, $new_array); 
    $backup_array = $new_array; 
}