2013-08-01 72 views
0

我想從數組創建一些輸入字段。 我有這樣根據數組大小改進動態輸入字段創建php

$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" 
     ); 

我竟被想改變我要創建第一個代碼創建一個「div」,然後創建其他「div」與最後3個值,我將始終mod 3 = 0值,但問題是創建一個新的div每3使用值

如何改進代碼? 我想這樣

$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等 是否做到這一點最好的形式給出?

+0

只是想知道,你爲什麼要費心去輸出標籤?你的方法對我來說很好。你可以在循環外計算'$ size%3 == 0'(只需將它存儲在一個變量中)以減少重複代碼,更重要的是,可以節省一點時間。 – sgroves

+0

這是因爲一個CSS有這個具體的事情,只是使用PHP來保持一個接一個地填充他們的一些繁瑣的工作 – cMinor

+0

'我想改變代碼我必須創建前3個數組的值創建一個「div」,然後用最後3個值創建其他「div」,最後你創建6個div,爲什麼你需要%3? – 2013-08-01 19:01:25

回答

1

你需要一個計數器:

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

創建一個通用代碼我會寫' $ field。=「".$value."

\ n」;'? – cMinor

+0

不知道取決於你想如何佈置。但最有可能的是你在'foreach()' – Pitchinnate

+0

或者僅僅是中間兩行中的4行,這取決於你要做什麼。 – Pitchinnate

1

變化的foreach爲 - 看起來比較清爽

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