質問

ニュースフラッシュモジュールに大きく基づいた独自のJoomlaコンポーネント(MVC)を書いています。最新の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>

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ステートメントを使用しようとしましたが、何らかの理由でページがタイムアウトしました!

アイデアはありますか

役に立ちましたか?

解決

$ i = 0 の場合、比較演算子を試しましたPHPの == です。無限ループがある場合は、各反復で0を$ iに割り当て、$ nに到達しないため、ループ内で行う必要があります。 :

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

}else{
  // Other Items...

} 

他のヒント

@CMSは正しいと思います。

ループ外の最初のアイテムを処理し、ループに残りのアイテムを処理させることを検討することもできます。この方法では、ループを通過するたびにチェックを行う必要はありません。

単純な for ループを使用している場合は、最初の項目を操作し、残りを tvanfosson 言った。わずかに高速で、潜在的に読みやすくなっています...

doSomethingWithFirst($list[0]);

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

for ではなく foreach を使用して配列をループする傾向があります。その場合、「firstDone」を使用します。 var、次のように:

$bFirstTime = true;
foreach($list as $item) {
    if ($bFirstTime) {
        doSomethingWithFirst($item);
        $bFirstTime = false;
    } else {
        doSomethingWithTheRest($item);
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top