2017-08-03 36 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; 
}