我正在创建一个班级书籍列表 - 有一个书籍的主列表,以及一个班级可以分配的书籍列表。我需要创建一个主列表数组,删除已经分配给班级的书籍,然后创建剩余书籍的选择列表。我有大部分工作,但我被困在一小部分。首先,我加载数组(book_id 是键,book_title 是值):
while ($master_book = mysql_fetch_array($big_book_list)) {
$b_id = $master_book['master_book_list_id'];
$book_list[$b_id] = $master_book['book_title'];
}
然后我删除了班级的主要书籍(已经设置好了):
unset($book_list[$primary_book]);
现在我加载已经分配的辅助书籍数组(主要和辅助书籍来自同一个列表):
$secondary_query = "select * from class_books cb, master_book_list mbl where class_id ='$class_id' and cb.book_id = mbl.master_book_list_id;";
$secondary_list = mysql_query($secondary_query);
现在我从主列表中删除 $secondary_list 中的书籍:
while ($secondary_book = mysql_fetch_array($secondary_list)) {
$b_id = $secondary_book['book_id'];
unset($book_list[$b_id]);
}
此时, print_r 正确显示了我的数组。但是这段代码:
foreach ($book_list as $book2) {
$the_key = key($book_list);
echo $the_key . ' and book2 is '. $book2 . '<br/>';
}
它将迭代预测的次数,但键保持相同的值(即“2”,数组中的第一个值。
谁能看到我做错了什么?