PHP中获取数组参数的顺序

PHP中获取数组参数的顺序,php,Php,我需要保留或以某种方式确定作为查询字符串参数提供的数组参数的原始顺序 即,请求的URL是/?a[]=x&b[]=y&a[]=z。当通过$_GET访问参数时,PHP将值解析为两个数组,从中我无法确定第三个a[]=z参数是在第二个b[]=y之后指定的 我想要的是这样的东西: [ 'a', 'b', 'a', ] 。。。或者任何可以确定原始顺序的类似东西 除了编写自定义查询字符串解析器之外,还有其他方法可以实现这一点吗?您需要自己解析查询字符串,因为form或get参数中的数

我需要保留或以某种方式确定作为查询字符串参数提供的数组参数的原始顺序

即,请求的URL是/?a[]=x&b[]=y&a[]=z。当通过$_GET访问参数时,PHP将值解析为两个数组,从中我无法确定第三个a[]=z参数是在第二个b[]=y之后指定的

我想要的是这样的东西:

[
    'a',
    'b',
    'a',
]
。。。或者任何可以确定原始顺序的类似东西


除了编写自定义查询字符串解析器之外,还有其他方法可以实现这一点吗?

您需要自己解析查询字符串,因为form或get参数中的数组用于分组值

出于您的目的,您可以使用:

$queryParameters = explode('&',$_SERVER["QUERY_STRING"]);
$postData = array();
foreach($queryParameters as $queryParameter){
    list($key, $value) = explode('[]=', $queryParameter);
    $postData[] = array(
        'key' => $key,
        'value' => $value
    );
}
它返回以下内容:

array(3) {
  [0]=>
  array(2) {
    ["key"]=>
    string(1) "a"
    ["value"]=>
    string(1) "x"
  }
  [1]=>
  array(2) {
    ["key"]=>
    string(1) "b"
    ["value"]=>
    string(1) "y"
  }
  [2]=>
  array(2) {
    ["key"]=>
    string(1) "a"
    ["value"]=>
    string(1) "z"
  }
}

但我认为最好更改查询参数的键。如果您描述了所需内容,则最容易帮助您找到正确的解决方案。

您必须自己检查$\u服务器[查询字符串]。可以在设置索引时分配索引。a[1]=x&b[2]=y&a[3]=z。您可以在收集完所需的密钥信息后重新订购密钥。我看不到这方面的实际应用。如果你解释了你想做什么,也许有更好的方法。@Abracadver URL是在客户端组装的,需要通过不同页面上的json对象提供给客户端,问题是为什么必须能够确定原始顺序?
array(3) {
  [0]=>
  array(2) {
    ["key"]=>
    string(1) "a"
    ["value"]=>
    string(1) "x"
  }
  [1]=>
  array(2) {
    ["key"]=>
    string(1) "b"
    ["value"]=>
    string(1) "y"
  }
  [2]=>
  array(2) {
    ["key"]=>
    string(1) "a"
    ["value"]=>
    string(1) "z"
  }
}