我遇到了一个问题。我在 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 项,依此类推。
<?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 跳过循环中的其余代码,并跳转到下一个迭代。
在我看来,使用 break 和 continue 是错误的做法。我会简单地使用两个 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/
我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r
我想学习一些关于Continuation的知识,使用callcc方法从一些文章中键入几个示例,但我遇到了错误:NoMethodError:undefinedmethod`callcc'formain:Objectfrom(pry):2:in`'没有文章提到包含延续库。那么如何解决这个问题呢?谢谢编辑:ruby1.9.2p290(2011-07-09修订版32553)[x86_64-linux] 最佳答案 您需要要求“继续”。require'continuation' 关于ruby-继续,
运行bundleinstall后出现此错误:Gem::Package::FormatError:nometadatafoundin/Users/jeanosorio/.rvm/gems/ruby-1.9.3-p286/cache/libv8-3.11.8.13-x86_64-darwin-12.gemAnerroroccurredwhileinstallinglibv8(3.11.8.13),andBundlercannotcontinue.Makesurethat`geminstalllibv8-v'3.11.8.13'`succeedsbeforebundling.我试试gemin
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它
在使用这些安装说明时,https://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_30x_on_Ubuntu_1404_with_Apache2_Phusion_Passenger_MySQL_Subversion_and_Git_%28Gitolite%29,我在执行以下命令时遇到了问题bundleinstall--withoutdevelopmenttestpostgresqlsqlite并得到以下错误。redmine@zaps-VirtualBox:~/redmine$bundleinstall--wit
在Ruby中,我想在另一个对象中捕获在一个对象上生成的NoMethodError,然后将一些值返回到引发异常的位置并继续执行。有没有现成的方法可以做到这一点?我想到的最好的是:classExceptionattr_accessor:continuationendclassOuterdefhelloputs"hello"endclassInnerdefworldputs"world"enddefmethod_missing(method,*args,&block)x=callccdo|cc|e=RuntimeError.exception(method)e.continuation=cc
在ubuntu14.04上安装jsongem失败安装带有native扩展的json1.8.3Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./home/sumeruadmin/.rvm/rubies/ruby-2.2.3/bin/ruby-r./siteconf20150910-31195-1cx4b0u.rbextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="compilinggenerator.clinkingshared-objectjson/e
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我使用PHP的时间太长了,对它感到厌倦了。我也想学习一门新语言。我一直在使用Ruby并且喜欢它。我必须在Rails和Sinatra之间做出选择,那么您会推荐哪一个?Sinatra真的不能用来构建复杂的应用程序,它只能用于简单的应用程序吗?
安装json(1.8.1)时出错,Bundler无法继续。确保geminstalljson-v'1.8.1'在捆绑之前成功。xcrun:错误:无效的事件开发人员路径(/Library/Developer/CommandLineTools),缺少xcrun:/Library/Developer/CommandLineTools/usr/bin/xcrunmake失败,退出代码1我知道这已经发布了,但我尝试了捆绑更新、捆绑安装并将gem文件放入我的gem文件和捆绑安装,但其他答案都没有任何效果。想法? 最佳答案 运行“捆绑更新”对我有用
我在MacOSXv10.8.3上通过rbenv安装了Ruby2的开发版本,并使用它来编译我正在开发的gem。我有一个内存问题,我想调试。不幸的是,每当我在rakespec的上下文中运行valgrind、gdb或cgdb时,我都会得到一个wholebunchoferrors像这样:warning:Couldnotfindobjectfile"/private/var/folders/5f/h1s00nhn0rv4ckkpg4k_bwhr0000gn/T/ruby-build.20130331232604.54521/ruby-2.0.0-dev/main.o"-nodebuginform