$ _GET数组没有传递给php

时间:2015-06-15 21:14:32

标签: php html cakephp get

我在HTML表单中遇到问题,其中一个字段是多选字段。当我将表单作为POST提交时,一切正常,我可以看到并使用该数组。当作为GET提交时,表单的多选部分仅显示string(5) "Array"。字面意思是Array。我正在使用内置在调试工具包中的CakePHP来查看查询字符串。

这是网址

http://www.domain.com/?keywords=&location%5B%5D=12333&location%5B%5D=42123

这里的重要部分是位置数组。但是当我查看服务器变量时,它会变为:

Query String keywords=&location=Array

此处location只打印单词Array。无论我尝试什么,我都无法将位置数组传递给PHP。 php.ini中是否有设置允许此操作?有没有其他方法可以使这项工作正常?为了保存搜索,我需要将其作为GET查询。

var_dump的{​​p> $_GET(与上述查询略有不同):

array(10) {
    ["agent"]=> string(0) ""
    ["price_min"]=> string(1) "0"
    ["price_max"]=> string(9) "987654321"
    ["beds"]=> string(0) ""
    ["baths"]=> string(0) ""
    ["mls"]=> string(0) ""
    ["pool"]=> string(1) "0"
    ["spa"]=> string(1) "0"
    ["keywords"]=> string(0) ""
    ["location"]=> string(5) "Array"
}

1 个答案:

答案 0 :(得分:5)

location%5B%5D=12333&location%5B%5D=42123
        ^^^^^^               ^^^^^^

您正在使用表单字段的location[]命名约定,它告诉PHP在超级全局中创建值的ARRAY。这意味着你实际上有这种结构:

$_GET = array(
   'keywords' => '',
   'location' => array(12333, 42123)
);

字符串上下文中的数组是文字Array

echo $_GET['location'];    // outputs: Array
echo $_GET['location'][0]; // outputs: 12333