<?php
$city_name = "new york";
$invoice_id = 3456;
$paid = 1;
$query_string = "city={$city_name}&id={$invoice_id}&paid={$paid}";
$url .= $query_string;
參數少還好,一旦超過 5-6 個,程式碼難讀、易出錯(少 &、編碼遺漏),維護成本高。
PHP 5 內建,接受關聯陣列,自動 URL 編碼、正確拼接:
<?php
$city_name = "new york";
$invoice_id = 3456;
$paid = 1;
$fields = array(
'city' => $city_name,
'id' => $invoice_id,
'paid' => $paid
);
$url .= http_build_query($fields, '', '&');
$fields = array(
'color' => array('red', 'green', 'blue')
);
// 輸出:color=red&color=green&color=blue
$fields = array(
'user' => array(
'name' => 'John',
'age' => 30
)
);
// 輸出:user[name]=John&user[age]=30
// 預設分隔符 &,編碼類型 PHP_QUERY_RFC1738(空格編為 +) // 可指定 PHP_QUERY_RFC3986(空格編為 %20) http_build_query($fields, '', '&', PHP_QUERY_RFC3986);
<?php $query = "city=new+york&id=3456&paid=1"; parse_str($query, $params); // $params = ['city' => 'new york', 'id' => '3456', 'paid' => '1']
parse_str 為反向操作,配合 http_build_query 形成完整查詢字串處理閉環。