代码之家  ›  专栏  ›  技术社区  ›  Paul M

从For循环中获取第一项

  •  2
  • Paul M  · 技术社区  · 17 年前

    这是我到目前为止的代码

    <ul id="handles" class="tabs">
        <?php for ($i = 0, $n = count($list); $i < $n; $i ++) :
                modSankeSlideHelper::getTabs($list[$i]);
         endfor; ?>                
    <li class="end"></li>
    </ul>
    

    function getTabs(&$item)
    {
        global $mainframe;
    
        $item->created     = $item->created;
    
        list($year, $month, $day) = split("-", $item->created);
        $tabdate = date('d\/m\/y', mktime(0, 0, 0, $month, $day, $year));
    
        require(JModuleHelper::getLayoutPath('mod_sankeslide', '_tab'));
    }
    

    <li><a href="#tab"><span><?php echo 'Shout ' . $tabdate; ?></span><b></b></a></li>
    

    第一个项需要有不同的值,并且在a:item中添加一个类项,因此我需要能够识别哪个是第一个项,并在循环期间执行一些操作。

    我试图在default.php中使用if$I=0 else语句,但由于某种原因导致页面超时!

    3 回复  |  直到 13 年前
        1
  •  4
  •   Christian C. Salvadó    17 年前

    你说,你试过了 if $i = 0 这个 comparison operator 在PHP中是 == ,如果您有一个无止境的循环,因为在每次迭代中,您将0分配给$i,而它永远不会达到$n,您应该在循环中执行以下操作:

    if ($i == 0){
      // First Item here...
    
    }else{
      // Other Items...
    
    } 
    
        2
  •  2
  •   tvanfosson    17 年前

    我认为@CMS是正确的。

    您可能还想考虑处理循环外的第一项,并让循环处理其余的项。这样,您就不必在每次通过循环时进行检查。

        3
  •  1
  •   Community Mohan Dere    9 年前

    如果你用的是普通的 for 循环,我建议只对第一项进行操作,然后根据需要循环其他项 tvanfosson said . 它稍微快一点,而且可能更容易阅读。。。

    doSomethingWithFirst($list[0]);
    
    for ($i = 1; $i < count($list); $i++) {
        doSomethingWithTheRest($list[$i]);
    }
    

    我倾向于使用 foreach 对于 要在数组上循环,在这种情况下,我将使用“firstDone”变量,如下所示:

    $bFirstTime = true;
    foreach($list as $item) {
        if ($bFirstTime) {
            doSomethingWithFirst($item);
            $bFirstTime = false;
        } else {
            doSomethingWithTheRest($item);
        }
    }