-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。2つの引数が必要です。最初の引数は、値のフォーマットをマークするプレースホルダーを追加できるフォーマット文字列です(たとえば%d、整数(d =数字)として表示するため)。2番目の引数は、値を含む配列です。

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

この方法の利点は、値の抽出とフォーマットを分離できることです。その後、これら2つの部分を、たとえば複数のタイプの出力など、互いに離れた場所に移動できます。

さらに、これはあなたがすでに書いたものを保存します。これは提出されたデータを正規化する上で大きな前進でした。

于 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 に答える