$ _GET值有一个奇怪的错误。我使用thsi代码进行查询:
array($_GET['cats'])
如果我手动插入get参数,例如:array(3,328)
一切正常。但如果我使用:
array($_GET['cats'])
并通过URl提交猫?cats=3,328
它不起作用,可能是什么问题?
答案 0 :(得分:5)
你无法插入这样的值。如果array($_GET['cats'])
的值为array('3,328')
,则$_GET['cats']
相当于3,328
。所以基本上,值是一个字符串,而不是整数列表。你想要的是:
explode(',', $_GET['cats'])
答案 1 :(得分:4)
array($_GET['cats'])
将创建一个包含单个元素的数组,该元素的值是$_GET['cats']
的值,无论它是什么值。如果字符串值3,328
与array('3,328')
相同。
如果您想将字符串值3,328
转换为与array(3,328)
相同的数组,请使用explode
将,
处的字符串拆分为字符串{{3}使用array_map
将每个字符串转换为整数:
$arr = array_map('intval', explode(',', $_GET['cats']));
现在这个结果数组与array(3,328)
完全相同:
var_dump($arr === array(3,328)); // bool(true)
答案 2 :(得分:1)
URL:参数?cats [] = 3&cats [] = 328
var_dump($_GET["cats"])
将导致:
array(2) {
[0]=>
string(1) "3"
[1]=>
string(3) "328"
}
URL参数:?cats = 3,328
...,然后使用一些PHP代码对其进行处理:
$cats = array_map("intval", explode(",", $_GET["cats"]));
var_dump($_GET["cats"])
将导致:
array(2) {
[0]=>
string(1) "3"
[1]=>
string(3) "328"
}
答案 3 :(得分:0)
$_GET['cats']
是一个简单的字符串。如果您想将3和328作为单独的值,则需要使用explode
。您可以使用foreach
打印爆炸值。
答案 4 :(得分:0)
您需要拆分GET参数
$values = explode(',', $_GET['cats'])
答案 5 :(得分:0)
正如其他人所说,$ _GET ['cats']是一个字符串,因为你正在做的事情。
但是,如果您将URI查询字符串更改为?cats[]=3,328
,那么$_GET['cats']
将为您准备array(3,328)
。