如何在循环数据中创建2列

时间:2017-11-23 13:45:33

标签: php html css foreach

我做foreach循环输出我的数据,所以我的数据就像这样

  • 鼠标
  • 鸡蛋

使用此代码

<div class="col-md-6">
    <?php foreach ($treefields as $key=>$item): ?>
      <?php if($key==0);?>

      <?php if($item['title'] == $estate_data_option_1057): ?>
      <div class="additional-amenities">
      <span class="available"><i class="fa fa-check-square"></i></span><strong> <?php echo $options_name_1057; ?>:</strong><?php echo $estate_data_option_1057;?></span>
      </div>
      <?php if (count($item['childs_4']) > 0) foreach ($item['childs_4'] as $child): ?>
      <div class="additional-amenities">
      <span class="available"><i class="fa fa-check-square"></i></span><strong><?php _che($child['description']); ?></strong><span><?php echo $child['title']; ?></span>
      </div>

      <?php endforeach; ?>
      <?php else: ?> 
      <?php  ?>   
      <?php endif;?>

      <?php endforeach; ?>   </div></div>

我怎么能像这样做2列?

 - Dog      - Egg
 - Cat      - Eagle
 - Mouse    - Fish
 - Bird

2 个答案:

答案 0 :(得分:1)

首先计算数组中的项目数,然后计算出它的一半和ceil,因此它不是浮点数。然后在条件中使用该值来回显标记,将其分成多列。

例如,下面是将数组放入两个不同ul元素的技术。

<ul>
<?php
$animals = array('Dog','Cat','Mouse','Bird','Egg','Eagle','Fish');
$numAnimals = count($animals);
$maxAnimalsPerColumn = ceil($numAnimals/2);

for($i=0; $i < $numAnimals; $i++) {
    echo "<li>".$animals[$i]."</li>";
    if ($i+1 == $maxAnimalsPerColumn ) {
        echo "</ul><ul>";
    }
}
?>
</ul>

$numAnimals将为7

$maxAnimalsPerColumn将是4($numAnimals除以2,ceil'd)

当循环值(从零开始加1)与$maxAnimalsPerColumn匹配时,它将回显一个结束的ul标签和一个新标签以开始第二个。

生成的标记大致为:

<ul>
  <li>Dog</li>
  <li>Cat</li>
  <li>Mouse</li>
  <li>Bird</li>
</ul>
<ul>
  <li>Egg</li>
  <li>Eagle</li>
  <li>Fish</li>
</ul>

答案 1 :(得分:1)

使用计数器。例如:

$nbrOfColumns = 2;
$rowsPerColumn = ceil(count($treefields)/$nbrOfColumns);
$counter = 1;

<div class="col-md-6">

foreach ($treefields as $key=>$item){

if($counter === $rowsPerColumn){
echo "</div><div class="col-md-6">";
$counter = 0;
}

(generate your HTML here)

$counter++;
}

</div>