2016-04-29 25 views
0

PHPでは、数値フィールドを使ってフォームフィールドに名前を付けると、$ _POSTオブジェクトの配列として機能します。PHPフォームポスト配列の順序

<form method="post" action="post.php"> 
    <input type="text" name="question[0][name]" /> 
    <input type="text" name="question[0][email]"/> 
    <input type="text" name="question[0][password]" /> 
    <hr> 
    <input type="text" name="question[1][name]" /> 
    <input type="text" name="question[1][email]"/> 
    <input type="text" name="question[1][password]" /> 
    <hr> 
    <input type="submit" value="Add" /> 
    <hr> 
    <p><?php 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    echo json_encode($_POST, JSON_NUMERIC_CHECK); 
} 

    ?></p> 
</form> 

出力

{"question":[{"name":"a","email":"aa","password":"aaa"},{"name":"b","email":"bb","password":"bbb"}]} 

フィールドの順序は、名前が繰り返されるたびにゼロから始まり、1だけインクリメントシーケンシャルされていない場合、それらは全て代わりキーとして解釈されます。だから、

<form method="post" action="post.php"> 
    <input type="text" name="question[1][name]" /> 
    <input type="text" name="question[1][email]"/> 
    <input type="text" name="question[1][password]" /> 
    <hr> 
    <input type="text" name="question[0][name]" /> 
    <input type="text" name="question[0][email]"/> 
    <input type="text" name="question[0][password]" /> 
    <hr> 
    <input type="submit" value="Add" /> 
    <hr> 
    <p><?php 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    echo json_encode($_POST, JSON_NUMERIC_CHECK); 
} 

    ?></p> 
</form> 

出力

{"question":{"1":{"name":"a","email":"aa","password":"aaa"},"0":{"name":"b","email":"bb","password":"bbb"}}} 

彼らは配列として解釈されるように、ポストキーの配列の順序を無視する$ _POSTを取得する方法はあります

?役に立つかどう

+0

をもう一つの方法は、取得時に$ _POST配列をソートすることです。 –

+0

@ShivaniPatelこれはあなたの例ですか? – frumbert

答えて

1

確認してください:

<form method="post" action="#"> 
    <input type="text" name="question[1][name]" /> 
    <input type="text" name="question[1][email]"/> 
    <input type="text" name="question[1][password]" /> 
    <hr> 
    <input type="text" name="question[0][name]" /> 
    <input type="text" name="question[0][email]"/> 
    <input type="text" name="question[0][password]" /> 
    <hr> 
    <input type="submit" value="Add" /> 
    <hr> 
    <p> 
<?php 
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {      
      ksort($_POST['question']);   
      print_r($_POST['question']); 
    } 

?> 
</p> 
</form> 
+0

キーに従って配列をソートします。 –

+0

私の最初のコードでは、フィールド名が何であるかは関係ありません。 「修正」では、フィールド名を事前に知っておく必要があります。名前を知らなくても、POSTオブジェクト内のすべてのフィールド名をソートする方法はありますか? – frumbert

+0

これは有用かどうかを確認してください。私はこのような関数を実装しています:http://i.imgur.com/8yfZN0f.pngと出力はhttp://i.imgur.com/7SiRiaR.pngです。 –