यह कोड और नोटेशन मेरा नहीं है। इवान के एक कस्टम फ़ंक्शन के साथ एक बहु मूल्य नाम नाम क्वेरी हल करता है;) से लिया गया है:
http://php.net/manual/en/function.parse-str.php#76792
क्रेडिट इवान के।
यह उल्लेख करता है कि parse_str buildin CGI मानक तरीके से क्वेरी स्ट्रिंग को संसाधित नहीं करता है, जब यह डुप्लिकेट फ़ील्ड की बात आती है। यदि एक ही नाम के कई फ़ील्ड क्वेरी स्ट्रिंग में मौजूद हैं, तो हर दूसरी वेब प्रसंस्करण भाषा उन्हें एक सरणी में पढ़ती है, लेकिन PHP चुपचाप उन्हें अधिलेखित कर देता है:
<?php
# silently fails to handle multiple values
parse_str('foo=1&foo=2&foo=3');
# the above produces:
$foo = array('foo' => '3');
?>
Instead, PHP uses a non-standards compliant practice of including brackets in fieldnames to achieve the same effect.
<?php
# bizarre php-specific behavior
parse_str('foo[]=1&foo[]=2&foo[]=3');
# the above produces:
$foo = array('foo' => array('1', '2', '3') );
?>
This can be confusing for anyone who's used to the CGI standard, so keep it in mind. As an alternative, I use a "proper" querystring parser function:
<?php
function proper_parse_str($str) {
# result array
$arr = array();
# split on outer delimiter
$pairs = explode('&', $str);
# loop through each pair
foreach ($pairs as $i) {
# split into name and value
list($name,$value) = explode('=', $i, 2);
# if name already exists
if( isset($arr[$name]) ) {
# stick multiple values into an array
if( is_array($arr[$name]) ) {
$arr[$name][] = $value;
}
else {
$arr[$name] = array($arr[$name], $value);
}
}
# otherwise, simply stick it in a scalar
else {
$arr[$name] = $value;
}
}
# return result array
return $arr;
}
$query = proper_parse_str($_SERVER['QUERY_STRING']);
?>