PHP Foreach:重复2列,1行

时间:2016-01-05 22:02:03

标签: php for-loop foreach

我正在尝试使用php foreach循环生成此

<form>
   <div class="form-group">

     <div class="row">

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

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

     </div>
   </div>
</form>

当前 PHP代码:

$form = '';

$form .= '<form>';

$count = 0;
foreach ($fields as $f) {

   // open .form-group and .row every two loops?
   if($count % 2) $form .='<div class="form-group"><div class="row">';
   $form .= '<div class="col-sm-6">'; // always open column

   $form .= 'Whatever data';

   $form .= '</div>'; // always close column

   // close .form-group and .row every two loops?
   if($count % 2) $form .= '</div></div>';

   $count++;
}


$form .= '</form>';

我尝试了很多方法,这只是我代码的一个例子。

重点是启动.form-group.row,然后在没有包装器的情况下循环两次列,如果这有意义的话。

如果我使用if ($count % 2 == 0),我会得到http://i.imgur.com/AUvzjlw.png

A

2 个答案:

答案 0 :(得分:2)

更改第一个

if ($count % 2)

if ($count % 2 == 0)

将第二个更改为:

if ($count % 2 != 0)

(第二次更改并非严格必要,但我认为这会使代码更清晰。)

您希望在$count为偶数时启动新的DIV,并在$count为奇数时结束。但是$count % 20,当它是偶数时,那就是假的。

DEMO

请注意,如果$ fields中的项目数量可能为奇数,则在循环后需要额外检查以关闭最后一个DIV。所以在循环结束时,请执行:

if ($count % 2 != 0) {
    // Close the last DIV if there are an odd number of fields
    $form .= '</div></div>';
}

答案 1 :(得分:0)

条件不正确,在这种情况下,for循环可能更合适:

for ($count = 0; $count < count($fields); $count++) {
   if($count % 2 === 0){
      //even
   }else{
      //odd
   }
}