$ _GETを介して配列型の1つ以上の変数を別のページに渡すにはどうすればよいですか?
私は常に?a=1&b=2&c=3
の形式で変数値を渡しました
a=[1,2,3]
を渡すことはどうですか?
Forループを作成し、すべての値を追加する必要がありますか?
ありがとう
_[]
_構文を使用して、_GETを介して配列を渡すことができます。
_?a[]=1&a[]=2&a[]=3
_
PHPはこの構文を理解するため、_$_GET['a']
_はarray(1, 2, 3)
と等しくなります。
キーを指定することもできます:
_?a[42]=1&a[foo]=2&a[bar]=3
_
多次元配列も機能します。
_?a[42][b][c]=1&a[foo]=2
_
http_build_query()
はこれを自動的に行います:
_http_build_query(array('a' => array(1, 2, 3))) // "a[]=1&a[]=2&a[]=3"
http_build_query(array(
'a' => array(
'foo' => 'bar',
'bar' => array(1, 2, 3),
)
)); // "a[foo]=bar&a[bar][]=1&a[bar][]=2&a[bar][]=3"
_
別の方法は、jsonエンコードされた配列を渡すことです。
_?a=[1,2,3]
_
そして、a
を_json_decode
_で解析できます:
_$a = json_decode($_GET['a']); // array(1, 2, 3)
_
そして、json_encodeで再度エンコードします。
_json_encode(array(1, 2, 3)); // "[1,2,3]"
_
この目的でserialize()
を使用しないでください。 Serializeを使用すると、オブジェクトをシリアル化できます。また、オブジェクトにコードを実行させる方法があります。したがって、信頼できない文字列をデシリアライズしないでください。
連想配列を http_build_query()
に渡し、結果の文字列をクエリ文字列としてURLに追加できます。配列はPHP so $_GET
受信ページの配列には配列が含まれます。
例
$query_str = http_build_query(array(
'a' => array(1, 2, 3)
));
$city_names = array(
'delhi',
'mumbai',
'kolkata',
'chennai'
);
$city_query = http_build_query(array('city' => $city_names));
これはあなたに与えます:
city[0]=delhi&city[1]=mumbai&city[2]=kolkata&city[3]=chennai
括弧もエンコードする場合は、次のコードを使用します。
$city_query = urlencode(http_build_query(array('city' => $city_names)));
出力:
city%255B0%255D%3Ddelhi%26city%255B1%255D%3Dmumbai .....
リファレンス: http_build_query 、 rlencode