2

我有一组从数据库中返回的数组,我正在使用 phpforeach循环来遍历它们。如果我要返回 5 个数组[1, 2, 3, 4, 5],每个数组都包含一个(时间、状态、位置),我想用某个 div 设置所有偶数数组的样式,用不同的 div 设置每个奇数数组的样式。我该怎么做?

我假设我会使用带模运算符的循环。

for ($i = 1; $i <= $count; $i++)
    if ($i % 2 == 0) {

    } else {

    }
}

<?php foreach ($reservation as $seat) : ?>

如果是数组 1、3、5。

 <div style="font-size:20px; background-color: #red; float:left;">
 <?php echo $seat['location']; ?>
 <?php echo $seat['time']; ?> 
 <?php echo $seat['status']; ?> </div>

如果是数组2、4

<div style="font-size:20px; background-color: #blue; float:right;">
 <?php echo $seat['location']; ?>
 <?php echo $seat['time']; ?> 
 <?php echo $seat['status']; ?> </div>


<?php endforeach ?>
4

4 回答 4

4

看起来很合理,但是:

background-color: #blue;

没有意义。'#' 用作十六进制颜色值的前缀,而你有一个颜色名称,所以你想要:

background-color: blue;

或者

background-color: #0000ff;

此外,您是否知道,在现代浏览器(即IE9+)中,可以仅通过 CSS3 实现交替样式元素,例如

div:nth-child(odd) { background-color: blue; }

查看

于 2012-11-06T00:06:11.387 回答
3

您不必使用 foreach 循环来枚举数组的所有元素:

for ($i=1; $i <= $count; $i++) {
    $seat = $reservation[$i-1];
    if ($i % 2 == 0) {
        // Do your 2 and 4
    } else {
        // Do your 1, 3 and 5
    }
}

我建议为 div 设置 CSS 类“奇数”和“偶数”,然后在单独的文件中设置它们的样式。如果需要,还可以使用 CSS3 伪类:nth-child(odd):nth-child(even).

于 2012-11-06T00:07:24.730 回答
2

只要您保留一个计数器,您的模数测试甚至可以在 foreach 循环中在线完成:

$ cat divloop.php 
<?php

$a=array( "one", "two", "three", "four", "five" );

$fmt="<div class='reservation %s'>%s</div>\n";

$count=0;

foreach ($a as $item) {
  printf($fmt, ++$count % 2 == 0 ? "even" : "odd", $item);
}

结果:

$ php divloop.php 
<div class='reservation odd'>one</div>
<div class='reservation even'>two</div>
<div class='reservation odd'>three</div>
<div class='reservation even'>four</div>
<div class='reservation odd'>five</div>
$ 

在这一点上,使用显式类比依赖可能无法全面使用的浏览器功能更安全。至少每个人似乎都了解基本的 CSS。:)

.reservation {
  font-size: 20px;
  float: left;
}

.even {
  background-color: #blue;
}

.odd {
  background-color: #red;
}
于 2012-11-06T00:09:38.127 回答
1

如果你把柜台放在 foreach 里怎么办。

$count = 0;
<?php foreach ($reservation as $seat) : ?>
if ($count % 2 == 0){
  //even div 
}else {
  // odd div
}
$count++;

<?php endforeach ?>
于 2012-11-06T00:08:53.097 回答