【发布时间】:2016-09-22 14:38:51
【问题描述】:
我有以下代码:
<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>,以前与用户没有关联的书籍出现在其中。在这种情况下,$array 保存了已经链接到该用户的书籍的 ID。
我知道问题出在嵌套循环上,因为我得到了我想要的结果,例如(对于 $row = 3 和 $i = 2):
Book1
Book1
Book2
Book2
Book3
Book3
期望的结果是:
Book1
Book2
Book3
但我不知道如何在不嵌套循环的情况下比较 Id。
【问题讨论】:
-
在给定特定输入的情况下,您能清楚地告诉我们您想要的输出是什么吗?
-
能否请您显示
$array中的实际内容,目前尚不清楚发生了什么以及您想要什么。 -
你在哪里设置你的$array?还有:你试过
in_array()吗?它可以防止你自己循环 $array -
$array 来自另一个查询,其中插入了与用户关联的所有 book_id,例如:$array = [1,2]
标签: php mysql loops for-loop foreach