0

我想从数组中创建一些输入字段。我有一个像

$info = array("one"   => "one1",
              "two"   => "two2",
              "three" => "three3"
        );

foreach ($info as $key => $value){
  $field.=  "<div class='formcol form-left middle'>  \n";
  $field.=  "  <input type='text' id='".$key."' size='12' name='".$key."' style='width:".$tam."px;'/>\n";
  $field.=  "\t\t\t   <div class='text'>".$value."</div>\n";
  $field.=  "\t\t </div> \n";
}

它的工作非常好,但是如果数组的大小是 6

$info = array(  "one"   => "one1",
               "two"   => "two2",
               "three" => "three3",
               "four"  => "four4",
              "five"   => "five5",
              "six"    => "six6" 
        );

我想更改代码我必须创建数组的前 3 个值以创建一个“div”,然后用最后 3 个值创建其他“div”,我将始终使用 mod 3 = 0 值,但问题是创建每 3 个使用的值一个新的 div

如何改进代码?我在想类似的东西

$size = sizeof($info);

foreach ($info as $key => $value){
  //if ($size % 3 ==0)
       $field.=  "<div class='formcol form-left middle'>  \n";
  //else
  //   {
      $field.=  "  <input type='text' id='".$key."' size='12' name='".$key."' style='width:".$tam."px;'/>\n";
      $field.=  "\t\t\t   <div class='text'>".$value."</div>\n";
  //   }
  //if ($size % 3 ==0) 
      $field.=  "\t\t </div> \n";

}

所以对于 0,1,2 它是一个新的 div,然后对于 3,4,5 是新的 div 等等。这是最好的方法吗?

4

2 回答 2

1

将 foreach 更改为 for - 看起来更干净

$field .= "<div>";
for ($i=0; $i<count($info); $i++){
    if($i % 3 == 0) {
        $field .= "</div><div>";
    }
    //...
}
$field.=  "</div>";
于 2013-08-01T19:57:18.847 回答
1

你需要一个计数器:

$counter = 0;
$field .= "<div>";
foreach ($info as $key => $value){
    $counter++;
    if($counter % 3 == 0) {
        $field .= "</div><div>";
    }
    //your code here
}
$field.=  "</div>";
于 2013-08-01T19:01:04.747 回答