在php foreach中嵌入div元素?

时间:2015-05-27 21:35:58

标签: php html

我尝试用class" elementcontent"嵌入2个元素。在class" row"的元素中,有人可以告诉我代码中的错误(参见第二个代码块)吗?

这是原始代码,如果请求将2个元素嵌入一个:

  <?php
        $i = 1;
        foreach ($items as $key=>$item) {
    ?>
        <div class="row">
          <div class="elementcontent">element content</div>
        </div>
    <?php

        $i++;

        }
    ?>

这是我尝试嵌入元素的代码:

        <?php
            $i = 1;
            foreach ($items as $key=>$item) {
        ?>
        <div class="row">
           <div class="elementcontent">element content</div>
        <?php
              if ($i % 2 == 0) {
                  echo '</div><div class="row">';
              }
        ?>
        </div>
        <?php

            $i++;

        }
        ?>

这种方式我在这个来源的帮助下找到了:How can I alternate div elements in php foreach loop

2 个答案:

答案 0 :(得分:2)

要在每行中放置两个要测试$key -

的元素
<?php
    $items = array('foo', 'bar', 'glorp', 'baz');

    foreach ($items as $key=>$item) {
        if($key % 2 == 0){
            echo '<div class="row">';
            echo '<div class="elementcontent">'. $item . '</div>';
        } else {
            echo '<div class="elementcontent">'. $item . '</div>';
            echo '</div>';
        }
    }
?>

通过使用密钥,不需要迭代器。

答案 1 :(得分:0)

如果我理解你,你想要的是一个ROW元素,里面有2个ELEMENTCONTENT。

你可以这样做:

<?php
$i = 0;
foreach ($items as $key => $item) {
$row = ($i % 2 == 0); ?>
    <?php if ($row): ?><div class="row"><?php endif; ?>
    <div class="elementcontent">element content</div>
    <?php if (!$row): ?></div><?php endif; ?>
<?php 
    $i++; 
}
if (count($items) % 2 === 1) {
    echo '</div>';
}
?>

每2个项目将包含一个带有类行的div。 我使用PHP's alternative syntax来获得更优雅的代码。

由于错误而更新了答案,并检查项目数是否为奇数,以关闭div标签。