somemo's diary

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【php】クエリストリングに関する関数

クエリストリングを配列から生成する関数と、クエリストリングから配列を生成する関数についてのメモです。

クエリストリングということに着目すると、impledeやexploeより便利になります。

http_build_query

クエリストリングを配列から生成する関数です。以下の配列で試してみました。

$parameters = array(1, 2, 3);
$query_str = http_build_query($parameters, null, '&');
var_dump($query_str);
string(11) "0=1&1=2&2=3"

第三引数は、php.ini等の設定によるのでクエリストリングにしたいときは指定した方がいいです。

次に、第二引数にprefixとなる文字列を渡すと以下のようになります。

$query_str = http_build_query($parameters,  'pre', '&');
var_dump($query_str);
string(20) "pre0=1&pre1=2&pre2=3"

第一引数に連想配列を渡すと以下のようになります。

$parameters = array(
  'a' => 1,
  'b' => 2,
  'c' => 3,
);
$query_str = http_build_query($parameters, null, '&');
var_dump($query_str);
string(11) "a=1&b=2&c=3"

parse_str

配列からクエリストリングを生成する関数です。前述の連想配列から作成したクエリストリングで試してみました。

parse_str($query_str);
var_dump($a);
var_dump($b);
var_dump($c);
parse_str($query_str); string(1) "1" string(1) "2" string(1) "3"

各パラメータの名前の変数になります。extractのような感じです。

配列にするには、第二引数に変数を指定する必要があります。

parse_str($query_str, $data);
var_dump($data);
array(3) {
  ["a"]=>
  string(1) "1"
  ["b"]=>
  string(1) "2"
  ["c"]=>
  string(1) "3"
}