所以我有一个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 个元素,所以它产生 2div
和一个类的 row ,里面是 3div
的一个类span4
。类行的第三个 div 仅包含 2div
个类span4
。
现在,当我尝试在 Web 服务器上运行它时,它返回一个空页面,没有任何 HTML 标记或 PHP 错误。而且我很确定我的 phperror_reporting
设置为E_ALL
. 试图删除它并且页面加载正常(当然没有相关代码应该创建的div)。
我通过使用不同的逻辑来解决这个问题。见下文
<?php for($i=1; $i <= count($headings); ): ?>
<div class="row">
<?php for($k=1; $k <= 3; $k++): ?>
<div class="span4">
<?php $heading = current($headings); ?>
<?php if ($heading !== false): ?>
<h2><?= key($headings); ?></h2>
<p><?= $heading['description']; ?></p>
<p><a class="btn" href="<?= $heading['link']; ?>">View details »</a></p>
<?php endif ?>
<?php next($headings); ?>
<?php $i++; ?>
</div> <!-- end of div.span4 -->
<?php endfor; ?>
</div> <!-- end of div.row -->
<?php endfor; ?>
但我仍然想知道为什么有问题的代码在逻辑上应该没问题时不起作用。
我是否遗漏了什么或者 codeIgniter 是否阻止了这种方式的嵌套循环。它是一个错误吗?
提前感谢您的答案!