2009-06-18 21 views
35
<input name="foo[]" ... > 

これまで私が使ったことがありますが、何が呼び出されているのか、仕様があるのでしょうか?HTML入力配列

HTML 4.01 Specで見つからなかったため、さまざまなGoogleの結果では、フォームデータを処理する多くのPHPの例とともに「配列」と呼ばれていました。

答えて

10

コメントon this page at PHP.netでいくつかの参照とポインタがあります。

トルステン氏は述べています

「XHTML仕様の互換性の指針のセクションC.8は、フラグメント識別子としてname属性の使用に適用されます。あなたはDTDをチェックする場合は、「名前」属性は、まだフォーム要素のCDATAとして定義されていることがわかります。これによると、「

Jetboyは

言う」:。名前のhttp://www.w3.org/TR/xhtml1/#C_8タイプを属性がXHTML 1.0で変更されました。つまり、XHTMLのname属性の角括弧は無効です。

にかかわらず、書き込み時には、W3Cのバリデータは、XHTML文書にこれをピックアップしていません。」

22

私が知る限り、ブラウザはこれらのフィールドでは何もしないことになっているので、HTML仕様には何もありません。彼らは通常のようにそれらを送信します。PHPは他の言語と同様に、配列に解析するものです。

44

私はそれがPHPでありHTMLではないと思います。

[]ですべてのHTMLフィールドを解析して配列にします。

ですから、

<input type="checkbox" name="food[]" value="apple" /> 
<input type="checkbox" name="food[]" value="pear" /> 
<input type="checkbox" name="food[]" value="banana" /> 

を持つことができますし、提出されたときに、PHPは$ _POST [ '食品']配列を作るだろう、とあなたはそうのようにその要素にアクセスすることができます。

echo $_POST['food'][0]; // would output first checkbox selected 

かへすべての値を選択した参照:とにかく

foreach($_POST['food'] as $v) { 
    print $v; 
} 

を、そのための具体的な名前があるとは思わない

+3

を、それに従ってください、私は彼がこのことを理解して考えて、 –

+0

Paoloが言っているように、私はそれを理解しています!他の言語でも使用されています –

+1

デフォルトのフォーム処理ライブラリで特別な命名が必要な場所でPHPが唯一の言語ですあなたがsaと複数の成功したコントロールを持っている状況のための慣習私の名前。他の言語は、一般的に何かを配列として扱うかどうかをプログラム作成者に決める決意を残しています。 – Quentin

0

...

<form action="index.php" method="POST"> 
<input type="number" name="array[]" value="1"> 
<input type="number" name="array[]" value="2"> 
<input type="number" name="array[]" value="3"> <!--taking array input by input name array[]--> 
<input type="number" name="array[]" value="4"> 
<input type="submit" name="submit"> 
</form> 
<?php 
$a=$_POST['array']; 
echo "Input :" .$a[3]; // Displaying Selected array Value 
foreach ($a as $v) { 
    print_r($v); //print all array element. 
} 
?>