এই কোড এবং স্বরলিপিটি আমার নয়। ইভান কে একটি কাস্টম ফাংশন সহ একাধিক মানের একই নামের ক্যোয়ারী সমাধান করে;) থেকে নেওয়া হয়েছে:
http://php.net/manual/en/function.parse-str.php#76792
ক্রেডিটগুলি ইভান কেতে যায়
এটি উল্লেখ করা যায় যে পার্স_স্ট্র্ট বিল্টিন সিজিআই স্ট্যান্ডার্ড উপায়ে কোয়েরি স্ট্রিং প্রক্রিয়া করে না, যখন এটি সদৃশ ক্ষেত্রে আসে। যদি একই নামের একাধিক ক্ষেত্রগুলি কোয়েরি স্ট্রিংয়ে উপস্থিত থাকে তবে প্রতিটি অন্যান্য ওয়েব প্রসেসিং ভাষা সেগুলি অ্যারেতে পড়তে পারে, কিন্তু পিএইচপি নিঃশব্দে সেগুলি ওভাররাইট করে:
<?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']);
?>