【问题标题】:PHP $_GET array nested parameters not workingPHP $_GET 数组嵌套参数不起作用
【发布时间】:2012-10-26 15:19:56
【问题描述】:

我在使用 LAMP-Stack 的 debian 服务器上遇到了奇怪的行为。

这个简单的测试解释了我的问题: 这是我的 test.php 脚本:

<?php
  $params = $_GET;
  print_r($params);
?>

如果我发出网址:http://localhost/test.php?arr[a]=1&amp;arr[b]=2&amp;arr[c]=3&amp;test=xyz 我希望服务器返回:

大批 ( [arr] => 数组 ( [一] => 1 [b] => 2 [c] => 3 ) [测试] => xyz )

但我只得到:

大批 ( [arr] => 数组 ( [一] => 1 ) [测试] => xyz )

我检查了 php.ini、apache 配置等等。我不知道为什么没有正确处理参数。 甚至我的

$_SERVER[REQUEST_URI]
变量显示了正确的参数,但它们根本没有被处理。

有什么想法吗?

【问题讨论】:

  • 您是否尝试对 URI 进行编码?如果我没记错的话,'[' 和 ']' 如果它们是通过表单发送的,它们将被浏览器编码。
  • 您是否尝试将&amp;amp; 替换为&amp;amp;
  • 如果我没记错的话,在某些 PHP 版本中,parse_str 中有一个错误。我以前在这里看到过这个问题...
  • 这可以解决您的 $_SERVER[REQUEST_URI] 问题。 davidwalsh.name/iis-php-server-request_uri
  • 解决这个问题的一个建议是:内爆数组,对其进行urlencode并将其传递给URL

标签: php arrays apache parameters


【解决方案1】:

你一定是做错了什么:

当我打电话给www.mysite.com/test.php?arr[a]=1&amp;arr[b]=2&amp;arr[c]=3&amp;test=xyz

然后做一个print_r($_GET);

我明白了

Array ( [arr] => Array ( [a] => 1 [b] => 2 [c] => 3 ) [test] => xyz )

更新

var_dump 的输出:

array(2) { 
  ["arr"]=> array(3) { ["a"]=> string(1) "1" ["b"]=> string(1) "2" ["c"]=> string(1) "3" }
  ["test"]=> string(3) "xyz" 
}

【讨论】:

  • 我想他知道出了点问题。这就是重点。这应该是评论,而不是答案。
  • 我同意 JvdBerg 的观点。也适用于我的。
  • 使用 PHP 5.3.8 获得相同的输出,虽然我有点同意 @RocketHazmat
  • 根据给定的信息,我认为这是问题的答案。如果提供了更多信息并且问题发生了变化,我可以删除我的答案。
【解决方案2】:

我终于想通了:

这是 SUSE Enterprise Linux 上 PHP 5.3.8 中的一个错误。 我让管理员升级到 PHP 5.3.17,这种不当行为消失了。

【讨论】:

  • 如果您可以在答案中提供指向错误票证的链接会更具体。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-09
  • 1970-01-01
  • 2012-09-17
  • 2019-05-18
  • 2012-08-28
  • 1970-01-01
相关资源
最近更新 更多