使用FOR循环消除由数组检索的数字

时间:2016-05-18 23:33:02

标签: php mysql

<!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)

有没有办法一次消除这两种情况?

2 个答案:

答案 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;