문제
나는 슬라이딩 탭 인터페이스에 최신 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);
}
}
제휴하지 않습니다 StackOverflow