我有几个都具有这种结构的数组:
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个单一课程的最后一个数组。
有关导致此问题的原因和解决方法的任何想法?
由于
答案 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;
}