質問
ニュースフラッシュモジュールに大きく基づいた独自の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);
}
}
所属していません StackOverflow