2017-01-18 1 views
-2

jQueryの解読が困難であるフォームの送信データシリアライズとすると:PHPのフォーム名の分解

array(
    someindex => array(
     0 => array(
      anotherindex => array(
      0 => array('value') 
     ) 
    ) 
    ) 
) 
:PHPで

[someindex][0][anotherindex][0][] = 'value'

を、私はある実数配列、に分解する必要があります

これを行う機能はありますか?これはどのように達成できますか?

EDIT:

別の単語、私はPHPの文字列として$name = '[someindex][0][anotherindex][0][]'を持っている場合、私は同じ構造を持つ配列を作成したい

サンプル:http://sandbox.onlinephpfunctions.com/code/5d604f087aab07d48be27969e94dc9656fd90ffd HTMLクライアント側:https://jsfiddle.net/bgay81q2/

JSONクライアントから送信されたデータ:

[{"name":"Data[index1][0][index2][0][]","value":"test"},{"name":"Data[index1][0][index2][0][]","value":"second value"}] 
+0

ない私はあなたがそれを '$ _POST'か、それはPHPではありません' $ _GET' –

+4

PHPが自動的にそれを行います求めているかを理解してくださいまたは送信している通常のフォーム。 JQueryはフォームをシリアライズし、Ajaxの名前文字列をそのまま送信します。 – Quentin

+0

を移入するとき –

答えて

1

あなたの後の機能はparse_strです。あなたのJSONでそれを使用する方法の例があります:

$str = '[ 
    {"name":"Data[index1][0][index2][0][]","value":"test"}, 
    {"name":"Data[index1][0][index2][0][]","value":"second value"} 
]'; 

$input = json_decode($str); 
// validate $input here 
// then get the data: 
parse_str(
    implode(
     '&', 
     array_map(
      function($var){ 
       return urlencode($var->name) . '=' . urlencode($var->value); 
      }, 
      $input 
     ) 
    ), 
    $request 
); 

print_r($request); 
+0

素晴らしい!これは私が探しているものです。何千もの感謝!! –

0

あなたが話していると仮定するとjQueryのserializeメソッドについては、PHPはこれをnatvielyサポートしています。 jQuery実装はURLのクエリフラグメントを生成します。したがって、これがGETリクエストリクエストURLに追加されたり、POST本体で送信された場合、データはPHPで$ _GET ot $ _POST(resp)として表示されます。

さらに密かにデータをPHPに密輸している場合は、PHPのparse_str()を使用して配列に変換できます。

+0

実際、それは私が必要とする変換です。サンプルはこちらhttp://sandbox.onlinephpfunctions.com/code/5d604f087aab07d48be27969e94dc9656fd90ffd –

+0

https://jsfiddle.net/bgay81q2/1/コンソールを開く –

関連する問題