【问题标题】:Getting the first item out of a For loop从 For 循环中取出第一项
【发布时间】:2010-09-19 07:08:45
【问题描述】:

我正在编写自己的 Joomla 组件 (MVC),它主要基于 newsflash 模块,因为我想在滑动选项卡式界面中显示最新的 5 个内容项,所有的辛苦工作都完成了,但我有真正的很难从 for 循环中获取内容。

这是我到目前为止的代码 默认.php

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

helper.php

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

_tab.php

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

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

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

有什么想法吗?

【问题讨论】:

    标签: php joomla for-loop


    【解决方案1】:

    如果您使用的是普通的 for 循环,我建议您只对第一个项目执行操作,然后以 tvanfosson said 循环遍历其余项目。它稍微快一些,并且可能更容易阅读......

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

    我倾向于使用foreach 而不是for 来循环数组,在这种情况下,我会使用“firstDone”变量,如下所示:

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

    【讨论】:

      【解决方案2】:

      我认为@CMS 是正确的。

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

      【讨论】:

      • tvanfosson,好主意,但我需要稍后在同一页面中使用相同的项目列表,所以我无法取消设置任何内容,尽管我确实尝试过复制和取消设置,但这搞砸了时间!!无论如何,非常感谢,
      • 我只是想让循环索引从 1 开始,而不是从 0 开始。在循环开始之前执行第一项。
      【解决方案3】:

      你说,你试过if $i = 0,PHP中的comparison operator==,如果你有一个无限循环,因为在每次迭代中你将0分配给$i,它永远不会达到$n,你应该在你的循环内做:

      if ($i == 0){
        // First Item here...
      
      }else{
        // Other Items...
      
      } 
      

      【讨论】:

      • 使用旧的 0 == $i 技巧会导致解释器错误,因此这个旧的 C 技巧也会成为 PHP 的有用范例吗?
      • 即使 tvanfossen 有一个好主意,我也给了你正确的答案。但是您指出了可怕的双重等于的主要错误。我是新的,不敢相信我错过了!感谢您指出!
      猜你喜欢
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多