php foreach循环帮助

时间:2011-04-15 13:57:56

标签: php codeigniter loops foreach

我有一个foreach循环,它构建了一个产品页面,基本上它将我的产品放在3行。

参见代码:

foreach ($product_sets as $product)
{
    $currentRow = ceil($currentItem / 3);
    $currentColumn = $currentItem - (($currentRow - 1) * 3);
    if ($number_of_blanks == 2) :
        if (($number_of_rows > 1 && $currentRow == ($number_of_rows - 1) && $currentColumn == 2) || ($number_of_rows == 1 && $currentColumn == 1)) :
    ?>
            <li><img src="<?php echo site_url('assets/img/blocks/guarantee.png'); ?>" alt="5 Year Guarantee" width="242" height="156"></li>
    <?php
            $currentItem++;
        endif;
    endif;
    ?>
    <li class="<?php if($currentItem % 3 == 0) echo 'endHomeBlock';?>">
        <?php $this->load->view('blocks/product_small', array('product' => $product)); ?>
    </li>
    <?php
        $currentItem++;

    }

我想要做的是在第一行的末尾放置一个图像(一个销售点),然后在其他行中随机放置一个图像,但保留3个项目(包括图像作为销售点)一排。我有一个名为images的数组中的图像路径,看起来与此相似,

$images = array(
  'iamge1.png',
  'image2.png,
  'image3.png,
  'image4.png,
);

我怎样才能做到这一点?我现在已经玩了几个小时了:(

2 个答案:

答案 0 :(得分:0)

所以我要做的是创建图像的哈希表以及表中要显示它们的点。表的关键是索引,值将是图像名称。

假设$currentItem从零开始,对于第一行中的第三个项,您将拥有的第一个键为2

然后在循环中,检查并查看哈希表中是否有$currentItem。如果是,则打印图像并递增$currentItem(并重新计算行和列),然后打印$product。如果它不在哈希表中,只需像正常一样打印$product

答案 1 :(得分:0)

抱歉,我没有太多时间为您编写完整的代码,但以下内容应该有效:

<ul>
    <li><?php
        foreach($items as $i=>$item){
            // ...write item...
            if(($i % 3)==0 && $i!=0){ // if multiple of 3 and not the first time..
                ?></li><li><?php
            }
        }
    ?></li>
</ul>