我遇到了一个问题。我在PHP中构建了一个foreach
循环:
<?php $show = false; ?>
<?php foreach ($this->items as $item) : ?>
但我想呼应前20项,并继续以下16项。
我已经设法使它做一个休息后,20个项目,但我没有得到以下16个项目(从NR 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上折叠一个div,将显示前20个项目,如果用户单击div 2,将显示接下来的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;
我怎么能管理它比与循环?或者你建议另一种方式?
提前感谢!真的帮助我理解了循环!!
6条答案
按热度按时间4xy9mtcn1#
break
中断并停止循环。continue
跳过循环中的其余代码,并跳转到下一次迭代。在我看来,使用
break
和continue
是错误的方法。我简单地使用两个for循环:注意:
$this->items
中任意数量的项都可以,如果小于20,则跳过后面的16项,如果大于36,则忽略其余项。vnjpjtjt2#
你可以使用array_slice来获取$this-〉items数组的一部分,并将其分配给3个不同的变量,然后分别在它们上面循环。
等等。
w46czmvw3#
不要使用
break;
使用continue;
rkue9o1l4#
vsmadaxz5#
这就是我到目前为止得到的,以通常的方式递减,即$variable--给我一个空值,$product-〉decrement('stock_quantity')在每次运行时减去1,即使stock_quantity字段远远大于$toSell变量。逻辑在我的脑海中,我只是在stock_quantity为0时从当前项目中获取数量并移动到下一个项目时遇到了麻烦。
kqhtkvqz6#
例如继续;和break;使用Foreach循环
输出: