2010-06-21 35 views
0

我有以下的foreach如何找到一个3byX电网

foreach($array as $v) 
{ 
    if(SOME LOGIC HERE) $class = "first"; 
    if(SOME LOGIC HERE) $class2 = "third"; 
     print '<span class="$class $class2">$v["name"]</span>'; 
} 

我想设置$ class1的是每1日,4日,7日,10日的“第三”(3N第一和第三列 - 2)和$类class2,设置为 '第三' 的第3,第6,第9,第12

回答

0

使用模运算符

for ($i=0; $i<count($array); $i++) 
    { 
    if (($i-1)%3 == 0) 
     $class = "first"; 
    else if ($i % 3 == 0) 
     $class = "third"; 

    echo '<span class="'.$class.'">blablabla</span> 
    } 
+0

不行!刚刚尝试过......用3个元素的数组给它赋予类;第三,第一,第一。哦..和一个';在回声后丢失 – Phliplip 2010-06-21 14:56:57

+0

@Phliplip:好吧,我可能误读了你的问题,我以为你在谈论元素1,而不是第一元素(PHP索引从0开始不是1)。无论如何,你只需要使用'$ i%3','($ i-1)%3'和'($ i-2)%3'来获得每个第一,第二和第三个元素,需要。 (我很抱歉,但从你的问题来看,你不知道你想要什么确切的输出) – nico 2010-06-21 15:23:30

+0

供参考:不是我的问题:) – Phliplip 2010-06-21 15:45:00

2
foreach($array as $k => $v) 
{ 
    if (($k % 3) == 0) { $class = "first"; } 
    elseif(($k % 3) == 2) { $class = "third"; } 
    else { $class = "second"; } 

    print '<span class="$class $class2">$v["name"]</span>'; 
} 
+0

这工程!但如果钥匙不是数字呢? – Phliplip 2010-06-21 14:59:58

+0

如果密钥不是数字,那么$ k%3会将$ k转换为数字0,所以$ k%3将始终为0%3,结果为0 ....但在大多数情况下,这些问题正在使用整数键值 – 2010-06-21 15:03:58

0
<?php 
$n = 0; 
foreach($array as $v) 
{ 
    $n++; 
    switch($n) { 
     case 1: 
      $class = 'first'; 
      break; 
     case 3: 
      $class = 'third'; 
      $n = 0; 
      break; 
     default: 
      $class = ''; 
      break; 
    } 
    print '<span class="' . $class . '">' . $v['name'] . '</span>'; 
} 
?> 

编辑:更新了代码,打印应该进入循环:)并清理代码。

+0

顺便说一句。如果你实际上不需要$ class AND $ class2,那么你可以将$ class2重命名为$ class,并从span中删除$ class2 – Phliplip 2010-06-21 14:43:40