2008-10-26 17 views
2

슬라이딩 탭 인터페이스에 최신 5 가지 컨텐트 항목을 표시하고 싶기 때문에 자체 Joomla 구성 요소 (MVC)를 뉴스 플레시 모듈에 많이 씁니다. 작업은 끝났지 만, for 루프에서 내용을 꺼내기가 정말 어렵습니다. 여기 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 문을 사용하려고했지만 어떤 이유로 페이지 시간 초과가 발생했습니다!

아이디어가 있으십니까?

답변

4

은 각 반복에서 당신은 $ 난에 0을 할당하기 때문에 당신이 무한 루프를 가지고 있고, 그것을, 당신은 내부에서 수행해야 $ N에 도달하지 않을 경우 PHP에서 comparison operator 당신과 함께, ==, 당신은 if $i = 0을 시도했다 당신의 루프 :

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

}else{ 
    // Other Items... 

} 
+0

이전 0 == $ 트릭을 사용하면 인터프리터 오류가 발생하여 이전 C 트릭이 PHP에도 유용한 패러다임을 만들 수 있습니까? – tvanfosson

+0

예, 0 == $ 나는 일해야합니다 ... – CMS

+0

tvanfossen이 좋은 생각을 가지고 있음에도 불구하고 나는 올바른 대답을주었습니다. 그러나 당신은 두려운 이중의 주요 오류를 지적했습니다. 나는 그것을 새롭게했다. 그리고 위선적 인 말투는 내가 그것을 놓쳤다라고 생각한다!! 그것을 지적 주셔서 감사합니다! –

2

@CMS가 맞다고 생각합니다.

루프 외부의 첫 번째 항목을 처리하고 루프가 나머지 항목을 처리하도록하는 것이 좋습니다. 이렇게하면 루프를 통과 할 때마다 확인하지 않아도됩니다.

+0

tvanfosson, 좋은 생각이지만 나중에 같은 페이지에서 동일한 항목을 사용해야하므로 복사를하지 않고 설정을 취소해도 아무 것도 설정을 해제 할 수 없습니다. ,하지만 그것은 mktime을 망쳐 놨어 !! 어쨌든 많은 감사, –

+0

난 루프 인덱스가 0보다는 1에서 시작하도록했다. 루프가 시작되기 전에 첫 번째 항목을 수행하십시오. – tvanfosson

1

일반 for 루프를 사용하는 경우 첫 번째 항목에 작업을 수행 한 다음 나머지 부분을 tvanfossonsaid으로 반복하는 것이 좋습니다.

$bFirstTime = true; 
foreach($list as $item) { 
    if ($bFirstTime) { 
     doSomethingWithFirst($item); 
     $bFirstTime = false; 
    } else { 
     doSomethingWithTheRest($item); 
    } 
} 
: 그것은
doSomethingWithFirst($list[0]); 

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

내가 어떤 경우에는, 내가 지금처럼 "firstDone"VAR을 사용, 배열을 통해 루프 for을 통해 foreach을 사용하는 경향이 ... 약간 빠른 잠재적으로 읽기 쉽게
+0

포인터 주셔서 감사합니다 :) –