簡體   English   中英

如何在php foreach循環中替換div元素

[英]How can I alternate div elements in php foreach loop

我有一組要從數據庫中獲取的數組,我正在使用php foreach循環來遍歷它們。 如果我要返回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 ?>

看起來很合理,但是:

background-color: #blue;

沒有道理。 “#”用作十六進制顏色值的前綴,而您具有顏色名稱,因此需要:

background-color: blue;

要么

background-color: #0000ff;

另外,您知道嗎,在現代瀏覽器(即IE9 + )中,僅通過CSS3即可實現替代樣式的元素,例如

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

校驗

您不必使用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
    }
}

我建議將CSS類“ odd”和“ even”設置為div,然后在單獨的文件中設置樣式。 如果需要,還可以使用CSS3偽類:nth-child(odd):nth-child(even)

只要您保留一個計數器,您的模數測試甚至可以在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;
}

如果您將計數器放在foreach中該怎么辦。

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

<?php endforeach ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM