2013-04-29 81 views
0

我想讓此代碼實際工作。 我試圖得到的是我的項目分成3列。來自Foreach的3個Div列類

我也想「第一」召列,「第二」,「第三」,而不是 class0,1類和類2

,因爲我的所有項目此代碼不能正常工作得到所謂class0

<?php 
$count = 0; 
foreach ($this->items as $item) { 
$count = $count == 3 ? 0 : $count++; 
?> 

<div class="<?php echo "class".$count ?>"> 

回答

0
<?php 
$count = 0; 
foreach ($this->items as $item) { 
if ($count==0) { 
    $class = "first"; 
    $count++; 
} else if ($count==1) { 
    $class = "second"; 
    $count++; 
} else { 
    $class = "third"; 
    $count = 0; 
} 
?> 

<div class="<?php echo $class ?>"> 

像這樣的東西應該工作雖然選擇的情況下可能會更快

+0

謝謝,這從切割ñ粘貼工作權 – 2013-04-29 14:55:05

2

無需爲== 3測試,一個簡單的:

<div class="classs<?php echo $count++ % 3?>"> 

會做的伎倆。模數學:

$count = 0 -> 0 % 3 = 0 
$count = 1 -> 1 % 3 = 1 
$count = 2 -> 2 % 3 = 2 
$count = 3 -> 3 % 3 = 0 
$count = 4 -> 4 % 3 = 1 
etc... 

您的代碼不工作,因爲$count++將返回計數的第一,然後遞增值。但是,由於原始值被返回並分配回$ count,所以您會一遍又一遍地分配0。

如果你已經完成++$count,那麼它會工作。 (增量然後返回新值)

1

這應該工作:

<?php 
    $count = 0; 
    $names = ['first','second','third']; 
    foreach ($this->items as $item) : 
?> 
<div class="class-<?=$names[$count++%3] ?>"> 
<?php 
    endforeach; 
?> 
0

您可以使用這些代碼:

1路:

<?php 
$count = 0; 
foreach ($this->items as $item) { 
$count = $count == 3 ? 0 : $count++; 
    switch ($count){ 
     case 1: echo "<div class='first' >";break; 
     case 2: echo "<div class='second' >";break; 
     case 3: echo "<div class='third' >";break; 
    } 
} 

>

第二路:

<?php 
$count = 0; 
$name = null; 
foreach ($this->items as $item) { 
    $count = $count == 3 ? 0 : $count++; 
    $name = ($count == 1) ? 'first': ($count == 2) ? 'second': 'third'; 
} 
?> 

<div class="<?php echo $name ?>" > 
0

您可以使用硬編碼值陣列,如:

<?php 
$numbers = array('first','second','third'); 
foreach ($this->items as $item): 
    $count = $count == 3 ? 0 : $count++; 
?> 
<div class="<?php echo "class_".$numbers[$count] ?>"> 
<?php endforeach; ?>