PHPバージョン
4+
// URLで使用可能な文字列形式にエンコードする配列
$data = array(
    'name' => 'John Doe',
    'age' => 30,
    'city' => 'New York'
);

// http_build_query() 関数を使用してクエリ文字列にエンコード
$queryString = http_build_query($data);
echo $queryString; // 出力: name=John+Doe&age=30&city=New+York

// parse_str() 関数を使用してデコード
// パースしたデータを第二引数 $decodedArray に配列形式で格納
parse_str($queryString, $decodedArray);

print_r($decodedArray); // 出力: Array ( [name] => John Doe [age] => 30 [city] => New York )
parse_str(string $string, array &$result): void
$query_string = 'name=John+Doe&age=30';

// 非推奨の方法:結果を格納する配列引数を省略
parse_str($query_string);

// $name と $age 変数が現在のスコープに直接生成されます
echo '名前(非推奨の方法):' . $name . '<br>'; // 出力: '名前(非推奨の方法):John Doe'
echo '年齢(非推奨の方法):' . $age; // 出力: '年齢(非推奨の方法):30'
$query_string = 'name=John+Doe&age=30';

// 推奨の方法:結果を $parsed_data 配列に格納
$parsed_data = []; // 結果を格納する配列はあらかじめ宣言しておくことが望ましいです
parse_str($query_string, $parsed_data);

// パースされたデータは $parsed_data 配列内にあります
$name = $parsed_data['name'];
$age = $parsed_data['age'];

echo '名前(推奨の方法):' . $name . '<br>'; // 出力: '名前(推奨の方法):John Doe'
echo '年齢(推奨の方法):' . $age; // 出力: '年齢(推奨の方法):30'