合并数组问题

时间:2017-08-03 12:50:52

标签: php arrays

我有几个都具有这种结构的数组:

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的那些。

如果我这样做:

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 个答案:

答案 0 :(得分: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;
}