gpt4 book ai didi

php - Foreach 在 PHP 中中断并继续

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:57:51 25 4
gpt4 key购买 nike

我遇到了一个问题。我在 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,将显示前 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;

除了循环之外,我如何管理它?或者您有其他建议吗?

提前致谢!真的帮助我理解了循环!!

最佳答案

break 跳出并停止循环。 continue 跳过循环中的其余代码,并跳转到下一个迭代。

在我看来,使用 breakcontinue 是错误的做法。我会简单地使用两个 for 循环:

$keys = array_keys($this->items);
$keysLength = count($keys);

echo '<div id="div1">';
for ($i = 0; $i < min($keysLength, 20); $i++) {
echo $this->items[$keys[$i]];
}
echo '</div>';

if ($keysLength >= 20) {
echo '<div id="div2">';
for ($i = 20; $i < min($keysLength, 36); $i++) { //36 being 20 + 16
echo $this->items[$keys[$i]];
}
echo '</div>';
}

注意:这适用于 $this->items 中任意数量的项目。如果小于 20,它将直接跳过接下来的 16,如果大于 36,它将忽略其余部分。

关于php - Foreach 在 PHP 中中断并继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16654448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com