<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<select>
<?php
include 'connection.php';
$q = "SELECT * FROM rooms WHERE duration='first lecture' and day='Sunday'";
$r = mysql_query($q);
$ro = mysql_num_rows($r);
if($ro==0) {
for($i=1; $i<=14; $i++) { ?>
<option value=""><?php echo $i; ?></option>
<?php
} }
else {
while($row = mysql_fetch_array($r)){
for ($i=1; $i<=14; $i++)
{
$exclude = array($row['name']);
if(in_array($i, $exclude)) continue;
?>
<option value="<?php echo $i; ?>"><?php echo $i; ?></option>
<?php
}
}
}
?>
</select>
</body>
</html>
我想使用FOR LOOP
来消除一个循环中数组检索的元素。
假设$row
检索到值(4,5)
,我希望FOR LOOP
显示的数字是1到14之间的数字,(4,5)
除外。
我尝试了很多次并且我成功了,但是loop
在第一次消除(4)
,第二次只消除(5)
。
有没有办法一次消除这两种情况?
答案 0 :(得分:0)
您可能希望将比较更改为:
if($row['name'] == $i) continue;
你快到了。唯一的问题是您的in_array($i, $exclude)
。您需要将$exclude
作为一个数组,其中包含您想要的数字。以此为例:
for ($i=1; $i<=14; $i++) {
$exclude = array(4, 5);
if(in_array($i, $exclude)) continue;
echo $i;
}
返回:12367891011121314
因此,您需要修改设置$exclude
的方式,因为$row['name']
不是这样做的。
另外,作为旁注,你为什么不做chris85 said in the comments and make the query not return these rows?
这可能就像修改SQL查询看起来一样简单:
SELECT * FROM rooms WHERE (duration='first lecture' AND day='Sunday') AND id NOT IN (4,5)
答案 1 :(得分:0)
$row['name']
可能不是数组。变化:
$exclude = array($row['name']);
if(in_array($i, $exclude)) continue;
到
if(+$row['name'] === $i) continue;