根据数组大小php改进动态输入字段的创建

时间:2013-08-01 18:53:36

标签: php arrays

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

这样的数组
$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" 
        );

我想改变我必须创建的前三个数组值的代码来创建一个&#34; div&#34;然后创建其他&#34; div&#34;使用最后3个值,我将总是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等。 这样做是最好的方法吗?

2 个答案:

答案 0 :(得分:1)

你需要一个柜台:

$counter = 0;
$field .= "<div>";
foreach ($info as $key => $value){
    $counter++;
    if($counter % 3 == 0) {
        $field .= "</div><div>";
    }
    //your code here
}
$field.=  "</div>";

答案 1 :(得分:1)

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

$field .= "<div>";
for ($i=0; $i<count($info); $i++){
    if($i % 3 == 0) {
        $field .= "</div><div>";
    }
    //...
}
$field.=  "</div>";