Question

J'écris mon propre composant Joomla (MVC), qui repose largement sur le module newsflash, car je souhaite afficher les 5 derniers éléments de contenu dans une interface à onglets glissants. difficile de sortir le contenu de la boucle.

Voici le code que j'ai jusqu'à présent 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>

Le premier élément doit avoir une valeur différente et un élément de classe doit être ajouté à l'élément a: je dois donc être en mesure d'identifier le premier élément et de faire quelque chose pendant cette boucle.

J'ai essayé d'utiliser if si $ i = 0 autre instruction dans le fichier default.php, mais cela a entraîné l'expiration du délai d'attente de la page pour une raison quelconque!

Des idées?

Était-ce utile?

La solution

Vous avez dit, vous avez essayé si $ i = 0 , opérateur de comparaison en PHP est == , avec votre si vous avez une boucle infinie, car à chaque itération, vous affectez 0 à $ i et que cela n'atteint jamais $ n, vous devriez le faire dans votre boucle. :

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

}else{
  // Other Items...

} 

Autres conseils

Je pense que @CMS est correct.

Vous pouvez également envisager de gérer le premier élément en dehors de la boucle et de laisser la boucle gérer le reste des éléments. De cette façon, vous n'avez pas à vérifier chaque passage dans la boucle.

Si vous utilisez une boucle simple pour , je vous conseillerais simplement d'agir sur le premier élément, puis de parcourir le reste en tant que tvanfosson dit . C'est un peu plus rapide et potentiellement plus facile à lire ...

doSomethingWithFirst($list[0]);

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

J'ai tendance à utiliser foreach sur pour pour effectuer une boucle sur des tableaux, auquel cas j'utiliserais un "quot firstone". var, comme ceci:

$bFirstTime = true;
foreach($list as $item) {
    if ($bFirstTime) {
        doSomethingWithFirst($item);
        $bFirstTime = false;
    } else {
        doSomethingWithTheRest($item);
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top