PHP中是否有一個選項可以通過(php.ini)識別在URL中作爲數組傳遞多次的參數?如何讓PHP將多個參數實例識別爲一個數組?
/cars.php?color=A&color=B
上面的查詢應該導致的顏色數組[「A」,「B」]代替第二參數「B」重寫第一參數「A」
PHP中是否有一個選項可以通過(php.ini)識別在URL中作爲數組傳遞多次的參數?如何讓PHP將多個參數實例識別爲一個數組?
/cars.php?color=A&color=B
上面的查詢應該導致的顏色數組[「A」,「B」]代替第二參數「B」重寫第一參數「A」
使用此:
/cars.php?color[]=A&color[]=B
//^^ ^^
不需要在php.ini中啓用任何內容,訪問$_GET['color']
將返回一個數組。
可以使用獲得的get PARAMS爲字符串:
$_SERVER['QUERY_STRING'];
所以你可以做這樣的事情:
foreach(explode("&", $_SERVER['QUERY_STRING']) as $params) {
list($key,$val) = explode("=",$params);
$getArray[$key][] = $val;
}
var_dump($getArray);
然而,這實在是太醜了,而應使用其他替代品(例如逗號分隔值)
如果你不想改變你的網址,你可以使用:
$url = 'http://www.test.com/cars.php?color=A&color=B';
$parse_url = parse_url($url);
$array_color = array();
if($parse_url['query']){
foreach (explode('&',$parse_url['query']) as $parameter)
{
$explode = explode('=',$parameter);
if($explode[0]=='color'){
$array_color[] = $explode[1];
}
}
}
var_dump($array_color);
我不推薦它,但它的工作。
是的,我知道PHP使用這種方法..但有沒有一個選項來識別版本沒有[]作爲一個數組呢? – Jasper 2015-04-01 12:03:44
我不知道有這樣的選擇。 – Tim 2015-04-01 12:08:02
你可以手動解析這個url,但是你現在想要這樣做的方式並不是如何在任何地方的任何語言中使用查詢參數。即使這個例子對我來說似乎是錯誤的,它應該用逗號分隔顏色= A,B – 2015-04-01 12:12:17