Слияние массива
У меня есть несколько массивов, которые все имеют эту структуру:
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;
}