PHP不将名称中带有方括号的表单输入转换为数组

PHP不将名称中带有方括号的表单输入转换为数组,php,forms,Php,Forms,我正在制作一个如下所示的表单: 红色 银币 金属的 变色 表单由JavaScript验证和提交,然后由PHP脚本处理。在live server上,表单工作正常,值被正确捕获,如果我使用var_dump()获取$\u POST的内容,我会看到: array(1) { ["option"]=> array(2) { [10]=> string(1) "1" [11]=> string(1) "A"

我正在制作一个如下所示的表单:


红色
银币
金属的
变色
表单由JavaScript验证和提交,然后由PHP脚本处理。在live server上,表单工作正常,值被正确捕获,如果我使用var_dump()获取$\u POST的内容,我会看到:

array(1) {
    ["option"]=>
    array(2) {
        [10]=>
        string(1) "1"
        [11]=>
        string(1) "A"
    }
}
array(1) {
    ["option"]=>
    string(0) ""
}
但当我在本地服务器上执行相同的操作时,我会看到:

array(1) {
    ["option"]=>
    array(2) {
        [10]=>
        string(1) "1"
        [11]=>
        string(1) "A"
    }
}
array(1) {
    ["option"]=>
    string(0) ""
}
我省略了其他输入字段,但它们的ID或名称中都没有“option”

是否有可能我的PHP版本没有正确配置来实现这一点,或者这是默认行为,只是应该正常工作?实时服务器使用PHP5.2(XAMPP),本地服务器使用PHP5.3.5(MAMP)

感谢您的帮助或评论。

PHP使用函数解析它,该函数只使用1个现在已弃用的设置

因此,检查本地和远程的
magic\u quotes\u gpc
设置并进行比较

仔细观察
parse_str()
如何解析示例字符串。您可以获取您的
$\u服务器['QUERY\u STRING']
并对该字符串使用
parse\u str()
,然后查看结果

同时检查:

PHP使用函数解析它,该函数只使用1个现已弃用的设置

因此,检查本地和远程的
magic\u quotes\u gpc
设置并进行比较

仔细观察
parse_str()
如何解析示例字符串。您可以获取您的
$\u服务器['QUERY\u STRING']
并对该字符串使用
parse\u str()
,然后查看结果

同时检查:


您使用的是框架还是普通的PHP?您是否尝试过仅使用var\u dump($\u请求)创建页面;并检查结果是否相同?感谢您的建议-使用$\u REQUEST而不是$\u POST显示正确的值。为了回答你的问题,网站中没有使用PHP或JavaScript框架。这肯定很奇怪$_请求都是GPC变量,$\u POST是唯一的POST,但两者的工作方式基本相同,您确定没有错误地将某些内容分配给\u POST吗?同意。如果$\u请求和$\u POST都被归类为GPC变量,那么它们的处理方式就不应该与$\u POST有所不同。您使用的是框架还是普通的PHP?您是否尝试过仅使用var\u dump($\u请求)创建页面;并检查结果是否相同?感谢您的建议-使用$\u REQUEST而不是$\u POST显示正确的值。为了回答你的问题,网站中没有使用PHP或JavaScript框架。这肯定很奇怪$_请求都是GPC变量,$\u POST是唯一的POST,但两者的工作方式基本相同,您确定没有错误地将某些内容分配给\u POST吗?同意。如果$\u请求和$\u POST都被归类为GPC变量,那么它们的处理方式就不应该与$\u POST有所不同。谢谢你,罗伯特。在本地服务器的php.ini设置中打开magic_quotes_gpc解决了这个问题。正如EJTH所建议的,即使在php.ini设置中关闭了magic_quotes_gpc,如果使用$_REQUEST而不是$_POST,表单值也会被正确解析。您永远不应该启用magic quotes,无论如何,它们都会随PHP5.4.0一起消失,这是一个很好的观点,我从来没有在自己的服务器上启用过它。在这个特殊的例子中,我的客户拥有他们自己的(位于同一地点的)服务器,因此他们不必担心服务器被托管提供商升级,并且在可预见的将来可以继续使用PHP5.2。谢谢Robert。在本地服务器的php.ini设置中打开magic_quotes_gpc解决了这个问题。正如EJTH所建议的,即使在php.ini设置中关闭了magic_quotes_gpc,如果使用$_REQUEST而不是$_POST,表单值也会被正确解析。您永远不应该启用magic quotes,无论如何,它们都会随PHP5.4.0一起消失,这是一个很好的观点,我从来没有在自己的服务器上启用过它。在这个特定的实例中,我的客户机拥有自己的(位于同一位置的)服务器,因此他们不必担心服务器被托管提供商升级,在可预见的未来,他们可以只使用PHP5.2。