2008-10-26 55 views
2

我正在編寫自己的Joomla組件(MVC),它主要基於newsflash模塊,因爲我想在滑動選項卡式界面中顯示最新的5個內容項目,工作已經完成,但我真的很難從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:item的類項目,所以我需要能夠識別哪個是第一個項目和在這個循環中做一些事情。

我試圖在default.php中使用if $ i = 0 else語句,但由於某種原因導致頁面超時!

任何想法?

回答

4

你說,你試過if $i = 0,在PHP中comparison operator==,用你的,如果你有一個無限循環,因爲在每次迭代分配0至$我,而且也從未達到$ N,你應該裏面做你的循環:

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

}else{ 
    // Other Items... 

} 
+0

將使用舊的0 == $我欺騙會導致解釋器錯誤,以便這個舊的C技巧會爲PHP創建一個有用的範例? – tvanfosson 2008-10-26 18:20:24

+0

是的,0 == $我應該工作... – CMS 2008-10-26 18:27:37

+0

即使tvanfossen有一個好主意,我已經授予你正確的答案。但是你指出了可怕的雙等於的主要錯誤。我新的,不能相信我錯過了!感謝您指出! – 2008-10-26 19:54:05

2

我認爲@CMS是正確的。

您可能還想考慮處理循環外的第一個項目,並讓循環處理其餘項目。這樣您就不必在循環中進行每次檢查。

1

如果您使用的是簡單的for循環,我建議您只對第一項採取行動,然後循環播放其他項作爲tvanfossonsaid。它的速度稍快,並可能更容易閱讀...

doSomethingWithFirst($list[0]); 

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

我傾向於使用foreach超過for遍歷數組,在這種情況下,我會用一個「firstDone」變種,像這樣:

$bFirstTime = true; 
foreach($list as $item) { 
    if ($bFirstTime) { 
     doSomethingWithFirst($item); 
     $bFirstTime = false; 
    } else { 
     doSomethingWithTheRest($item); 
    } 
} 
相關問題