我希望以一种方式回显数组的值,前4个将在一个部分中回显,其余部分(可以是5个或更多)在不同的部分中回显。例如:
<?php $items = $kStore->getItems(); ?>
<div id="section1">
<?php foreach($items as $item) {
if($count <= 4){
?>
<h1><?php echo $item->getId(); ?></h1>
<?php } }?>
</div>
<div id="section2">
<?php foreach($items as $item) {
if($count > 4){
?>
<h1><?php echo $item->getId(); ?></h1>
<?php } } ?>
</div>
我想它必须是“那样的”,但不知道如何计算。另外,我不想两次通过阵列,我觉得这不是最快的方法。有什么想法吗?谢谢!
答案 0 :(得分:2)
您可以使用array_slice来偏移开始并限制迭代的数组部分的长度:
<div id="section1">
<?php foreach(array_slice($items, 0, 4) as $item) { … } ?>
</div>
<div id="section2">
<?php foreach(array_slice($items, 4) as $item) { … } ?>
</div>
如果$items
不是数组,而只是实现Iterator的非数组对象,则无法使用此方法,但您可以使用LimitIterator
代替
<?php
$sectionOneItems = new LimitIterator($items, 0, 4);
$sectionTwoItems = new LimitIterator($items, 4);
?>
<div id="section1">
<?php foreach($sectionOneItems as $item) { … } ?>
</div>
<div id="section2">
<?php foreach($sectionTwoItems as $item) { … } ?>
</div>
如果这也不起作用,那么需要对被迭代的对象进行一些更多的内省。
答案 1 :(得分:0)
我认为这个功能可能对你有用 array_chunk()。http://www.php.net/manual/en/function.array-chunk.php