我有以下代碼:的foreach,for循環冗餘PHP
<select multiple="multiple">
<?php $sql = "SELECT book_id, book_name FROM book ORDER BY book_name";
try {
$conn = new PDO("...");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
foreach ($conn->query($sql) as $row) {
$myId = $row['book_id'];
$myName = $row['book_name'];
for ($i = 0; $i < count($array); $i++) {
if ($myId != $array[$i]) {
echo("<option value='$myId'>$myName</option>");
}
}
}
}
catch(PDOException $e) {
...
}
$conn = null;
?>
</select>
我的目的是有選擇<select>
,其中與用戶以前沒有相關的書籍出現。在這種情況下,$數組包含已經鏈接到此用戶的書籍的ID。
我知道這個問題是嵌套循環,因爲我得到的結果,我想,比如(爲$行= 3,$ I = 2):
Book1
Book1
Book2
Book2
Book3
Book3
和所期望的結果將是:
Book1
Book2
Book3
但我想不出如何比較Id的,沒有嵌套循環。
你能清楚地告訴我們您需要的輸出會是什麼給予一定的投入? –
你能不能展示'$ array'中的實際內容,不清楚發生了什麼事以及你想要什麼。 – Styphon
你在哪裏設置你的$數組?還有:你嘗試過'in_array()'嗎?它可以防止你自己循環$ array –