Слияние массива

У меня есть несколько массивов, которые все имеют эту структуру:

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

Число в самом внешнем элементе массива является идентификатором курса. Список чисел в самых внутренних элементах массива является идентификатором урока.

Я хочу объединить все массивы, которые содержат эту структуру, вместе. Но только те, с идентификатором курса 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 ответ

Решение

Я проверил ваш код и обнаружил проблему, которую вы использовали. $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;
}
Другие вопросы по тегам