Echo数组值在不同的部分

时间:2014-04-13 22:25:19

标签: php arrays loops foreach

我希望以一种方式回显数组的值,前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>

我想它必须是“那样的”,但不知道如何计算。另外,我不想两次通过阵列,我觉得这不是最快的方法。有什么想法吗?谢谢!

2 个答案:

答案 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