1. ホーム
  2. php

[解決済み] クエリ文字列の中で配列を渡すには?

2022-03-21 06:26:15

質問

クエリ文字列で配列を渡す標準的な方法はありますか?

はっきり言って、複数の値を持つクエリ文字列があり、そのうちの1つは配列の値でしょう。 このクエリ文字列の値を配列として扱いたいのですが、配列を分解して他のクエリ文字列変数と区別がつかなくなるようなことはしたくありません。

また、これによると ポストアンサー 著者は、配列のクエリ文字列サポートが定義されていないことを示唆しています。 これは正確なのでしょうか?

EDITです。

Alexの回答から、これを行う標準的な方法はないようなので、私のフォローは、次に簡単な方法は何かということです。 認識 の両方で、読み込んだパラメータが配列であることを確認します。 PHP ジャバスクリプト ?

複数のパラメータに同じ名前を付けて、それらが配列に属していることを知ることは可能でしょうか?例

?myarray=value1&myarray=value2&myarray=value3...

それとも、これは悪い習慣なのでしょうか?

どのように解決するのですか?

以下は、私が理解したことです。

複数値のフォームフィールドを送信する、つまりGET/POSTのバーを通して配列を送信することは、標準が必ずしも明示されていないため、いくつかの異なる方法で行うことができます。

複数値のフィールドや配列を送信する方法としては、以下の3つが考えられる。

  • ?cars[]=Saab&cars[]=Audi (最良の方法-PHPはこれを配列に読み込む)
  • ?cars=Saab&cars=Audi (悪い方法-PHPは最後の値だけを登録します)
  • ?cars=Saab,Audi (未試行)

フォーム例

フォーム上では、多値のフィールドは セレクトボックスには、複数の :

<form> 
    <select multiple="multiple" name="cars[]"> 
        <option>Volvo</option> 
        <option>Saab</option> 
        <option>Mercedes</option> 
    </select>
</form>

(注意:この場合、セレクトコントロールの名前を some_name[] そうすれば、結果として得られるリクエストバーはPHPによって配列として登録されます)

... あるいは 同じ名前を持つ複数の隠しフィールド :

<input type="hidden" name="cars[]" value="Volvo">
<input type="hidden" name="cars[]" value="Saab">
<input type="hidden" name="cars[]" value="Mercedes">


NOTE 使用方法 field[] を複数の値で使用することは、本当に不十分なドキュメントです。の複数値キーに関するセクションには、それについての言及はありません。 クエリ文字列 - Wikipedia または W3C ドキュメント 複数選択入力の処理


アップデイト

コメントで指摘されているように、これは非常にフレームワークに依存するものです。いくつかの例を挙げます。

クエリーの文字列です。

?list_a=1&list_a=2&list_a=3&list_b[]=1&list_b[]=2&list_b[]=3&list_c=1,2,3

Railsです。

"list_a": "3", 
"list_b":[
    "1",
    "2",
    "3"
  ], 
"list_c": "1,2,3"

Angularです。

 "list_a": [
    "1",
    "2",
    "3"
  ],
  "list_b[]": [
    "1",
    "2",
    "3"
  ],
  "list_c": "1,2,3"

(アンギュラー ディスカッション )

の例については、コメントを参照してください。 node.js , ワードプレス , ASP.net


秩序を保つこと。 もう一つ考慮すべきなのは、もしあなたが オーダー つまり、区切られた値のリストを渡して、 それを明示的に配列に変換するという方法です。