将foreach结果分为2列

时间:2012-12-08 16:00:54

标签: php css arrays foreach

我正在尝试将foreach的结果列表设置为两列,但是我不太确定如何在不抛弃PHP的情况下进行操作。

目前,所有内容如下所示: current layout

我想这样看: wanted layout

目前,我的foreach和CSS看起来如此:

<p class="title">Reviews</p>
            <section id="reviews">
                <ul class="section_body">
                    <?php
                        foreach($reviews['reviews'] as $rv){
                            if ($rtmp++ < 10);
                            if ($rv['freshness'] == 'fresh') {
                               $image = "fresh";
                            }
                            else {
                                $image = "rotten";
                            }

                            echo '<img src="assets/images/' . $image . '.png" class="rating" title="Rotten" alt="Rotten" />';
                            echo '<li>' . $rv['quote'] . '</li>';
                        }
                    ?>
                </ul>
            </section>

Current CSS

提前感谢任何可能提供帮助的人!非常感谢。

2 个答案:

答案 0 :(得分:1)

我通常使用css来执行此类任务以让浏览器处理内容

#reviews li
{
  float:left;
  width: 45%;
  ...
}

将这两行添加到您的css中,让浏览器负责安排。这个想法是每个李拿走一半的容器(50%)。我做了45%来照顾额外的填充,边距和边框

此外,您的报价和图片应该在li

 <li> <img src="..." />  <span>my quote here</span>  </li>

答案 1 :(得分:0)

尝试以下代码

<section id="reviews">                
<?php
$i=0;
foreach($reviews['reviews'] as $rv)
{
    if($i++%2 == 0)
    {
        echo '<ul class="section_body">';
    }
    if ($rtmp++ < 10);
    if ($rv['freshness'] == 'fresh') {
       $image = "fresh";
    }
    else {
        $image = "rotten";
    }

    $img =  '<div><img src="assets/images/' . $image . '.png" class="rating" title="Rotten" alt="Rotten" /></div>';
    echo '<li>' .$img . $rv['quote'] . '</li>';

    if($i%2 == 0 || $i== count($reviews['reviews']))
    {
        echo '</ul>'
    }
}
?>
</section>

您应该将图片和评论文字放在li元素中。