Pergunta

Eu estou escrevendo meu próprio componente Joomla (MVC), sua base fortemente no módulo newsflash, porque eu quero mostrar as últimas 5 itens de conteúdo em uma interface com abas de correr, todo o trabalho mais difícil está feito, mas estou tendo reais difícil obter conteúdo para fora do loop for.

Aqui está o código que tenho até agora 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>

As primeiras necessidades de itens para ter valor diferente e um item de classe adicionado ao um:. Item, então eu preciso ser capaz de identificar qual é o primeiro item e fazer alguma coisa durante esse laço

Eu tentei usar se $ i = 0 else na default.php, mas resultou em um tempo limite página por algum motivo!

Todas as idéias?

Foi útil?

Solução

Você disse, você tentou if $i = 0, o comparação operador em PHP é ==, com o seu se você tem um loop infinito, porque em cada iteração você atribuir 0 a $ i, e nunca chega a US $ n, você deve fazer dentro de seu loop:

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

}else{
  // Other Items...

} 

Outras dicas

Eu acho @CMS está correto.

Você também pode querer pensar sobre como lidar com o primeiro item fora do loop e deixar o punho fechado o resto dos itens. Desta forma, você não tem que fazer a verificação em cada passagem pelo loop.

Se você estiver usando um loop for liso, eu recomendo apenas agindo no 1º item e, em seguida, loop através o resto como tvanfosson disse . É um pouco mais rápido e potencialmente mais fácil de ler ...

doSomethingWithFirst($list[0]);

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

I tendem a usar foreach sobre for de varrer matrizes, caso em que, eu iria usar uma var "firstDone", assim:

$bFirstTime = true;
foreach($list as $item) {
    if ($bFirstTime) {
        doSomethingWithFirst($item);
        $bFirstTime = false;
    } else {
        doSomethingWithTheRest($item);
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top