2013-04-29 77 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; ?>