2012-06-10 69 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); 

这种方法的好处是你有解耦值提取和格式化。然后,您可以将这两个部分在未来更远离彼此移动,例如,多种类型的输出。

此外,这保留了您已经编写的内容,这是向正常化提交的数据迈出的一大步。