我有以下代码:的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 –