1

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

目前,一切如下所示: 当前布局

我希望它看起来像这样: 想要的布局

目前,我的 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>

当前的 CSS

提前感谢任何可以提供帮助的人!将非常感激地收到它。

4

2 回答 2

1

我通常使用 css 来完成这种任务,让浏览器处理这些事情

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

将这两行添加到您的 css 并让浏览器负责安排。这个想法是让每个 li 占据容器的一半(50%)。我做了 45% 来处理额外的填充、边距和边框

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

 <li> <img src="..." />  <span>my quote here</span>  </li>
于 2012-12-08T16:08:12.697 回答
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 元素中。

于 2012-12-08T16:12:52.057 回答