0

クラスの本のリストを作成しています。本のマスターリストと、クラスに割り当てることができる本のリストがあります。マスターリストの配列を作成し、クラスにすでに割り当てられている本を削除してから、残りの本の選択リストを作成する必要があります。私はそれのほとんどが機能していますが、私は小さな部分で立ち往生しています。まず、配列をロードします(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」)のままです。

誰かが私が間違っていることを見ることができますか?

4

1 に答える 1

3

foreachループからキーを取得できます。

foreach ($book_list as $the_key => $book2) {
    echo $the_key . ' and book2 is '. $book2 . '<br/>';
}
于 2012-08-06T18:18:55.087 に答える