我有一个奇怪的错误,值为$_GET。我使用以下代码进行查询:array($_GET['cats'])
如果我手动插入get参数,比如:array(3,328),一切正常。但是,如果我使用:array($_GET['cats'])并像?cats=3,328一样通过URL提交猫,它就不能工作。可能的问题是什么?
发布于 2010-10-12 20:58:37
你不能像那样插入一个值。如果$_GET['cats']的值为3,328,则array($_GET['cats'])等同于array('3,328')。所以基本上,这个值是一个字符串,而不是一个整数列表。你想要的是:
explode(',', $_GET['cats'])发布于 2010-10-12 20:59:44
array($_GET['cats'])将创建一个包含单个元素的数组,该元素的值是$_GET['cats']的值,无论它是什么值。对于字符串值,3,328与array('3,328')是相同的。
如果要将字符串值3,328转换为与array(3,328)相同的数组,请使用explode将,处的字符串拆分为字符串,使用array_map和intval将每个字符串转换为整数:
$arr = array_map('intval', explode(',', $_GET['cats']));现在,生成的数组实际上与array(3,328)完全相同
var_dump($arr === array(3,328)); // bool(true)发布于 2010-10-12 21:06:13
正如其他人所说,$_GET‘GET’是一个字符串,因为你现在正在做事情。
但是,如果您将URI查询字符串更改为?cats[]=3,328,那么$_GET['cats']将是可供您使用的array(3,328)。
https://stackoverflow.com/questions/3914891
复制相似问题