Frage

Ich bin meine eigene Joomla-Komponente (MVC) zu schreiben, seine schwer auf dem Newsflash-Modul basiert, weil ich die neuesten 5 Inhaltselemente in einer gleitenden Oberfläche mit Registerkarten, die ganze harte Arbeit getan angezeigt werden soll, aber ich habe echte schwieriger, Inhalte aus der for-Schleife.

Hier ist der Code Ich habe bisher 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>

Der erste Punkt muss anderen Wert hat und eine Klasse Element hinzugefügt, um die a. Einzelteil, also ich muß in der Lage sein zu erkennen, welche das erste Element ist und während dieser Schleife etwas tun

Ich habe versucht, wenn $ i = 0 else-Anweisung in der default.php zu verwenden, aber es führte zu einer Seite Timeout aus irgendeinem Grund!

Irgendwelche Ideen?

War es hilfreich?

Lösung

Du hast gesagt, du versucht if $i = 0, die Vergleichsoperator in PHP ist ==, mit Ihrem wenn Sie eine Endlosschleife, weil in jeder Iteration Sie 0 bis $ i zuweisen, und es erreicht nie $ n, sollten Sie in Ihrem Schleife tun:

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

}else{
  // Other Items...

} 

Andere Tipps

Ich denke, @CMS korrekt ist.

Sie können auch über den Umgang mit dem ersten Punkt außerhalb der Schleife denken und ließen die Schleife den Rest der Elemente behandeln. Auf diese Weise müssen Sie nicht die Prüfung machen auf jeder durch die Schleife.

Wenn Sie eine Ebene for Schleife verwenden, würde ich empfehlen, auf dem 1. Artikel einfach handeln und dann durch den Rest Looping als tvanfosson genannten . Es ist etwas schneller und möglicherweise leichter zu lesen ...

doSomethingWithFirst($list[0]);

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

neige ich foreach über for Schleife über Arrays zu verwenden, wobei in diesem Fall würde ich einen "firstDone" var verwenden, etwa so:

$bFirstTime = true;
foreach($list as $item) {
    if ($bFirstTime) {
        doSomethingWithFirst($item);
        $bFirstTime = false;
    } else {
        doSomethingWithTheRest($item);
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top