我在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"
}
答案 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