需要根据项目数在foreach循环中创建两组项目,但需要扭曲

时间:2015-11-11 20:02:21

标签: php loops foreach

行,

所以我在PHP中有一个foreach循环。

$i = 0

$c = count($cars);

foreach ( $cars as $car ) {

   // if less than 10 items
   if ( $c < 10 ) {
      echo '<div class="column-full-width">';
         echo $i . '. ' . $car->name;
      echo '</div>';
      $i++;
   }
   // if 10 items or more
   if ( $c > 10 ) {
      if ( $c <= 5 ) {
         echo '<div class="column-left">';
            echo $i . '. ' . $car->name;
         echo '</div>';
         $i++;
      }
      if ( $c > 5 ) {
         echo '<div class="column-right">';
            echo $i . '. ' . $car->name;
         echo '</div>';
         $i++;
      }
   }

}

如果数组中的项目是10或更多(如果最多9个,1列可以),我需要创建2列,但是,列应该是动态的,甚至是它们包含的项目的数量。我的意思是如果我有10个项目,两个列将包含5个项目,如果我有11个项目,左列将有6个项目,右边将有5个项目,如果我将有12个项目,则将有6个项目,如果我将有13个项目,左边有7个项目,右边的列有6个项目。

如何在PHP中执行此类条件?

1 个答案:

答案 0 :(得分:1)

这个怎么样:

$c = count($cars);

$i = 0;

if ($c < 10) {
  echo '<div class="column-full-width">';
  foreach ($cars as $car) {
     echo ($i++) . '. ' . $car->name . '<br />';
  }
  echo '</div>';
} else {
  $lc = ceil($c / 2);     
  $act = reset($cars);   

  echo '<div class="column-left">';
  while ($i < $lc) {
    echo ($i++) . '. ' . $act->name . '<br />';    
    $act = next($cars);
  }       
  echo '</div>';     

  echo '<div class="column-right">';
  while ($i < $c) {
    echo ($i++) . '. ' . $act->name . '<br />';    
    $act = next($cars);
  }   
  echo '</div>';
}