Foreach键不递增

时间:2012-08-06 18:17:04

标签: php mysql

我正在创建一个课本列表 - 有一个主要的书籍列表,以及可以分配该类的书籍列表。我需要创建一个主列表数组,删除已经分配给该类的书籍,然后创建剩余书籍的选择列表。我的大部分都在工作,但我只是处理了一小部分。 首先,我加载数组(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',即数组中的第一个值。

谁能看到我做错了什么?

1 个答案:

答案 0 :(得分:3)

你可以从foreach循环中获取密钥:

foreach ($book_list as $the_key => $book2) {
    echo $the_key . ' and book2 is '. $book2 . '<br/>';
}