2012-11-06 30 views
1

我有一組數組,我從數據庫中取回數據,我使用php foreach循環來完成它們。如果我返回5個數組[1, 2, 3, 4, 5],每個數組包含一個(時間,狀態,位置),我想用一個特定的div對每個偶數組進行樣式設置,對每個數組使用不同的div。我將如何做到這一點?我如何在PHP foreach循環中交替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 ?> 

回答

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 
    } 
} 

我建議設置CSS類「奇」和「偶「到divs,然後在一個單獨的文件中對它們進行設計。如果你願意,你也可以使用CSS3僞類:nth-child(odd):nth-child(even)

+0

是有爲什麼你堅持要開始** $我**在1? – cbayram

+0

我的意圖是編寫類似於OP的原始代碼 – strmstn

4

看起來合理,但是:

background-color: #blue; 

沒有意義。以「#」被用作十六進制顏色值的前綴,而你有一個顏色名稱,所以你會希望:

background-color: blue; 

background-color: #0000ff; 

而且,你知道,在現代瀏覽器(例如IE9+),可以單獨通過CSS3實現交替樣式的元素,例如

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

檢查

+0

+1,但這樣做的狀態,這是一個CSS3解決方案,[不被一些舊的瀏覽器支持(http://www.quirksmode.org/css/contents.html) – cbayram

0

如果您將該計數器置於foreach中,該怎麼辦。

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

<?php endforeach ?> 
+0

的示例,只要所討論的數組是排序的,是 – cbayram

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; 
}