首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP $_GET应返回数组而不是字符串

PHP $_GET应返回数组而不是字符串
EN

Stack Overflow用户
提问于 2010-10-12 20:55:48
回答 6查看 134关注 0票数 1

我有一个奇怪的错误,值为$_GET。我使用以下代码进行查询:array($_GET['cats'])

如果我手动插入get参数,比如:array(3,328),一切正常。但是,如果我使用:array($_GET['cats'])并像?cats=3,328一样通过URL提交猫,它就不能工作。可能的问题是什么?

EN

回答 6

Stack Overflow用户

发布于 2010-10-12 20:58:37

你不能像那样插入一个值。如果$_GET['cats']的值为3,328,则array($_GET['cats'])等同于array('3,328')。所以基本上,这个值是一个字符串,而不是一个整数列表。你想要的是:

代码语言:javascript
复制
explode(',', $_GET['cats'])
票数 4
EN

Stack Overflow用户

发布于 2010-10-12 20:59:44

array($_GET['cats'])将创建一个包含单个元素的数组,该元素的值是$_GET['cats']的值,无论它是什么值。对于字符串值,3,328array('3,328')是相同的。

如果要将字符串值3,328转换为与array(3,328)相同的数组,请使用explode,处的字符串拆分为字符串,使用array_mapintval将每个字符串转换为整数:

代码语言:javascript
复制
$arr = array_map('intval', explode(',', $_GET['cats']));

现在,生成的数组实际上与array(3,328)完全相同

代码语言:javascript
复制
var_dump($arr === array(3,328));  // bool(true)
票数 4
EN

Stack Overflow用户

发布于 2010-10-12 21:06:13

正如其他人所说,$_GET‘GET’是一个字符串,因为你现在正在做事情。

但是,如果您将URI查询字符串更改为?cats[]=3,328,那么$_GET['cats']将是可供您使用的array(3,328)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3914891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档