-1

我有一个包含 20 组字段的 HTML 表单。这里有2个例子:

<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 代码生成一个字符串 ( $all ) 来存储字段值:

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,则我的$all值为:1|2|3|4 1|2|3|4

但是,我想对此进行更多自定义。最终,我希望我的$all是:

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 以实现此目的?

非常感谢您的任何指点。

4

2 回答 2

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

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

此外,这保留了您已经编写的内容,这是在规范化提交的数据方面向前迈出的一大步。

于 2012-06-10T07:18:02.740 回答
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";
        }
于 2012-06-10T06:53:15.937 回答