我正在编写自己的Joomla组件(MVC),它主要基于newsflash模块,因为我想在滑动选项卡式界面中显示最新的5个内容项,所有的辛苦工作都完成了,但我有真实的难以从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中使用if $ i = 0 else语句,但由于某种原因导致页面超时!
有什么想法吗?
答案 0 :(得分:4)
你说过,你试过if $i = 0
,PHP中的comparison operator是==
,如果你有一个无限循环,你可以在每次迭代中将0分配给$ i,并且它永远不会达到$ n,你应该在循环中做到:
if ($i == 0){
// First Item here...
}else{
// Other Items...
}
答案 1 :(得分:2)
我认为@CMS是正确的。
您可能还想考虑处理循环外的第一个项目并让循环处理其余项目。这样您就不必对每次循环进行检查。
答案 2 :(得分:1)
如果您使用简单的for
循环,我建议您只对第一项进行操作,然后以tvanfosson said循环完成其余内容。它的速度稍快,可能更容易阅读...
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);
}
}