2

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

这是我到目前为止的代码 default.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>

助手.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 语句,但由于某种原因导致页面超时!

有任何想法吗?

4

3 回答 3

4

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

if ($i == 0){
  // First Item here...

}else{
  // Other Items...

} 
于 2008-10-26T18:17:52.823 回答
2

我认为@CMS 是正确的。

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

于 2008-10-26T18:18:47.627 回答
1

如果您使用的是普通for循环,我建议您只对第一项进行操作,然后按照tvanfosson 所说的那样遍历其余部分。它稍微快一些,并且可能更容易阅读......

doSomethingWithFirst($list[0]);

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

我倾向于使用foreachoverfor来遍历数组,在这种情况下,我会使用“firstDone”var,如下所示:

$bFirstTime = true;
foreach($list as $item) {
    if ($bFirstTime) {
        doSomethingWithFirst($item);
        $bFirstTime = false;
    } else {
        doSomethingWithTheRest($item);
    }
}
于 2008-10-26T22:54:22.203 回答