문제

나는 슬라이딩 탭 인터페이스에 최신 5 개의 콘텐츠 항목을 표시하고 싶기 때문에 내 자신의 Joomla 구성 요소 (MVC)를 작성하고 있습니다. 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에서 $ i = 0 else 문을 사용하려고했지만 어떤 이유로 든 페이지 타임 아웃이 발생했습니다!

어떤 아이디어?

도움이 되었습니까?

해결책

당신은 말했습니다 if $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]);
}

나는 사용하는 경향이있다 foreach ~ 위에 for 어레이를 루프하기 위해,이 경우 "FirstDone"var를 사용합니다.

$bFirstTime = true;
foreach($list as $item) {
    if ($bFirstTime) {
        doSomethingWithFirst($item);
        $bFirstTime = false;
    } else {
        doSomethingWithTheRest($item);
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top