2012-06-10 111 views
-1

我有一個包含20組字段的HTML表單。下面是2個例子:自定義PHP字符串格式

<input type="text" class="auto-clear" id="p1weight" name="p1weight" value="" />  
<input type="text" class="auto-clear" id="p1length" name="p1length" value="" />  
<input type="text" class="auto-clear" id="p1width" name="p1width" value="" />  
<input type="text" class="auto-clear" id="p1height" name="p1height" value="" />  

<input type="text" class="auto-clear" id="p2weight" name="p2weight" value="" />  
<input type="text" class="auto-clear" id="p2length" name="p2length" value="" />  
<input type="text" class="auto-clear" id="p2width" name="p2width" value="" />  
<input type="text" class="auto-clear" id="p2height" name="p2height" value="" /> 

我使用下面的PHP代碼生成的字符串($所有)存儲的字段值:

foreach(range(1, 20) as $i) 
    { 
     // Create an array that stores all of the values for the current number 
     $values = array( 
      'p' . $i . 'weight' => $_POST['p' . $i . 'weight'], 
      'p' . $i . 'length' => $_POST['p' . $i . 'length'], 
      'p' . $i . 'width' => $_POST['p' . $i . 'width'], 
      'p' . $i . 'height' => $_POST['p' . $i . 'height'] 
     ); 

     $all .= implode('|', $values) . "\n\n"; 
    } 

如果我對2輸入字段的集合是1,2,3 & 4,這給我的$所有值爲:1|2|3|4 1|2|3|4

但是,我想定製這更多。最後,我想我的$所有是:

Item1: Weight (kg):1 Length (cm): 2 Width (cm): 3 Height (cm): 4 
Item2: Weight (kg):1 Length (cm): 2 Width (cm): 3 Height (cm): 4 

如何更新上面我的PHP來實現這一目標?

非常感謝任何指針。

+0

教科書「過於本地化」。投票結束。 –

+0

我建議尋找html模板。有很多方法可能會在PHP中做到這一點,但這將是一件讓人頭疼的事,而不是它的價值。在你的情況下,最簡單的方法將是一個狡猾的循環,只是將值類型映射到值,使用計數器來指示項目# – Anthony

回答

0
foreach(range(1, 20) as $i) 
     { 

      $all .= "Item".$i.": Weight (kg):".$_POST['p' . $i . 'weight']." Length (cm): ".$_POST['p' . $i . 'length']." Width (cm): ".$_POST['p' . $i . 'width']." Height (cm): ".$_POST['p' . $i . 'height']."\n"; 
     } 
+1

絕對完美,Waseem!非常感謝。祝你有美好的一天! – michaelmcgurk

+1

請不要喂[幫助吸血鬼](http://www.slash7.com/pages/vampires) –

+1

很好的回答!沒有描述做了什麼,沒有關於什麼被修改或改進的信息,或者爲什麼。如果所有的答案都是這樣的話,我們什麼也不會學習,並且喜歡它。 ':s' –

1

您上面的代碼已經很正常地將提交的數據標準化到數組中。現在要映射數組中的值,可以使用名爲vsprintf的函數。它有兩個參數。第一個是格式化字符串,您可以在該標記中添加佔位符的格式(例如,%d顯示爲整數(d = digit)),第二個參數是包含值的數組:

$format = "Item$i: Weight (kg): %d length (cm): %d Width (cm): %d Height (cm): %d \n\n"; 
$all .= vsprintf($format, $values); 

這種方法的好處是你有解耦值提取和格式化。然後,您可以將這兩個部分在未來更遠離彼此移動,例如,多種類型的輸出。

此外,這保留了您已經編寫的內容,這是向正常化提交的數據邁出的一大步。