所以我有一个codeigniter视图文件,里面有一个像这样的代码:
<?php for($i=1; $i <= count($headings); ): ?>
<div class="row">
<?php while(($i%3) != 0 ): ?>
<div class="span4">
<?php $heading = current($headings); ?>
<h2><?= key($headings); ?></h2>
<p><?= $heading['description']; ?></p>
<p><a class="btn" href="<?= $heading['link']; ?>">View details »</a></p>
<?php next($headings); ?>
<?php $i++; ?>
</div> <!-- end of div.span4 -->
<?php endwhile; ?>
</div> <!-- end of div.row -->
<?php endfor; ?>
我想在这里实现的是通过三个循环遍历数组($headings)
。我想生产这样的东西:
<div class="row">
<div class="span4"><!-- $heading element --></div>
<div class="span4"><!-- $heading element --></div>
<div class="span4"><!-- $heading element --></div>
</div>
<div class="row">
<div class="span4"><!-- $heading element --></div>
<div class="span4"><!-- $heading element --></div>
<div class="span4"><!-- $heading element --></div>
</div>
<div class="row">
<div class="span4"><!-- $heading element --></div>
<div class="span4"><!-- $heading element --></div>
</div>\
在上面的例子中,$heading
数组包含8个元素,因此它产生2个div
个带有一个行的类,里面是3 div
个,其类为{ {1}}。第三个div类的div只包含2 span4
个类div
。
现在,当我尝试在Web服务器上运行它时,它返回一个空页面,没有任何HTML标记或PHP错误。而且我很确定我的php span4
设置为error_reporting
。试图删除它并且页面加载正常(当然没有div,所讨论的代码应该创建)。
我通过使用不同的逻辑解决了这个问题。见下文
E_ALL
但我仍然想知道为什么有问题的代码在逻辑上不起作用它应该没问题。
我是否遗漏了某些东西,或者codeIgniter是否阻止了这种方式的嵌套循环。这是一个错误吗?
提前感谢您的答案!
答案 0 :(得分:1)
以下是如何通过检查元素索引
来实现的<div class="row">
<?php for($i=0; $i < count($headings); ): ?>
<?if($i > 0 && $i%3 == 0):?>
</div><!-- end of div.row -->
<div class="row">
<?endif?>
<div class="span4">
<?php $heading = current($headings); ?>
<h2><?= key($headings); ?></h2>
<p><?= $heading['description']; ?></p>
<p><a class="btn" href="<?= $heading['link']; ?>">View details »</a></p>
<?php next($headings); ?>
<?php $i++; ?>
</div> <!-- end of div.span4 -->
<?php endfor; ?>
</div><!-- end of div.row -->
编辑我刚刚意识到你有字符串索引,所以我更新了使用for
循环而不是foreach
编辑2
你的第一个代码没有返回任何内容的原因是因为你在第一次中断时会陷入无限循环,也就是当$ i == 3时,在你的下一个for
迭代中看到虽然你的条件没有得到满足,而且因为你的$ i ++在一段时间内,$ i的价值现在永远停留在3