我遇到了一个问题。我在PHP中建立了一个foreach
循环:
<?php $show = false; ?>
<?php foreach ($this->items as $item) : ?>
但我想要回显前20个项目,并继续后面的16个项目。
我已经成功做到在20个项目后进行分页,但我无法获取接下来的16个项目(从第21个开始)。
这是我目前的代码:
<?php $show = false; ?>
<?php $i = $item->id = 1; ?>
<?php foreach ($this->items as $item) : ?>
<?php if(++$i > 20) break; ?>
如果我将$i
设置为'21'
,它仍然会输出项目1等等。
解决方案 ## 感谢@dhavald
<?php $show = false; ?>
<?php foreach (array_slice ($this->items, 0, 20) as $item) : ?>
通过在foreach中放置一个
array_slice
,您可以控制要显示的项目。因此,在下一个div中,我想显示第21到36项,我唯一需要改变的是0和20为20, 36。为了澄清我的意思,我有三个div,我想在上面输出一些项目。如果用户折叠第一个div,将出现前20个项目,如果用户单击div2,则会出现接下来的16个项目。
我该如何更正此代码以实现这一点?
由于我忘记提到,您提供的解决方案确实帮助我理解了过程,但由于我使用了Joomla 3.1的组件生成器,所以有一行代码使得调用前20个和第二个16个项目变得有点复杂。
在foreach循环之后直接有这行代码。
if($item->state == 1 || ($item->state == 0 && JFactory::getUser()>authorise('core.edit.own',' com_ncitycatemus.vraagantwoordtoevoegen.'.$item->id))):
$show = true;
我该如何使用循环来管理它?或者您建议采用其他方式吗?
提前感谢!真的帮助我理解了循环!!
$this->items
的实际长度。我太懒了 :D - gkalpak