PHP根据可用的数组元素限制循环

时间:2014-05-08 13:25:33

标签: php arrays for-loop

我创建了可用座位,下面带有 循环:

<?php

$seats = 7;

for ($i=1; $i <= $seats; $i++) {

?>

<div class='col-xs-6'>
  <div class='well text-center' id='<?php echo $i ?>'>
    Seat No: <?php echo $i ?>
  </div>
</div>

<?php

}

?>

如果$i变量与 <中的$k变量匹配,我想添加 预订的 类em>预订座位 以下数组元素:

$booked_seat = array('1','4','5','6','7');

结果:

Array
(
    [0] => 1
    [1] => 4
    [2] => 5
    [3] => 6
    [4] => 7
)

所以我这样做了:

<?php

$seats = 7;

for ($i=1; $i <= $seats; $i++) {

?>

<div class='col-xs-6'>
  <div class='well text-center <?php echo ($i == $booked_seat[$i-1]) ? 'booked' : '' ?>' id='<?php echo $i ?>'>
    Seat No: <?php echo $i ?>
  </div>
</div>

<?php

}

?>

我得到偏移量错误,因为$booked_seat$seats循环不太一样,如何限制循环以使其不会偏移?

谢谢你

3 个答案:

答案 0 :(得分:1)

试试这个:

$seats = 7;

for ($i=1; $i <= $seats; $i++) {


?>

<div class='col-xs-6'>
  <div class='well text-center <?php echo (in_array($i, $booked_seat)) ? "booked" : "" ?>' id='<?php echo $i ?>'>
    Seat No: <?php echo $i ?>
  </div>
</div>

<?php

}

?>

警告:代码未经测试。

答案 1 :(得分:1)

您可以随时翻转$booked_seat数组,然后使用isset()测试数组元素是否存在。像这样:

<?php

$seats = 7;
$booked_seat = array('1','4','5','6','7');
$booked_a = array_flip($booked_seat);

for ($i=1; $i <= $seats; $i++) {
  printf("seat: %d%s\n", $i, isset($booked_a[$i]) ? " booked" : "");
}

(这是我的测试,您可以添加HTML以适应。)

示例:http://3v4l.org/5npsm

答案 2 :(得分:0)

您应该使用sizeof()方法。

所以:

  

$ num_seats = sizeof($ seat);

然后用这个for循环。

  

for($ i = 0; $ i&lt; $ num_seats; $ i ++){      //码   }