【发布时间】:2014-03-22 11:16:39
【问题描述】:
我必须用嵌套数组发送这个数组
$tags=[];
foreach ($importedTags->tags as $key => $value) {
$tags[]=array(
"name"=>$value->getName(),
"id"=>$value->getId(),
);
}
数组(如果有 3 个导入标签)可能如下所示:
array(3) {
[0]=> array(2) { ["name"]=> string(14) "foo" ["id"]=> string(7) "3375095" }
[1]=> array(2) { ["name"]=> string(12) "bar" ["id"]=> string(7) "3378925" }
[2]=> array(2) { ["name"]=> string(8) "foobar" ["id"]=> string(7) "3405555" }
}
作为 url 上的 GET 查询参数
我试过了
$params=array(
"pageId"=>$pageId,
"tags"=>urlencode(implode(",", $tags))
);
return $this->redirect($this->generateUrl('my_route.create_sth',$params));
但是当我像这样解析它时
$tags=urldecode($request->query->get('tags'));
$tags=explode(",",$tags);
返回
array(3) {
[0]=> string(5) "Array"
[1]=> string(5) "Array"
[2]=> string(5) "Array"
}
我知道为什么会这样,这是有道理的
但我是一个 php 新手,那么我该如何解决这个问题并获得一个字符串表示,就像我试图用 implode 和explode 来用这种嵌套数组取回数组一样?
【问题讨论】:
-
它们不是嵌套数组。它们是带有 string 内容
Array的字符串(如您在var_dump中所见)。您很可能在某个时候尝试将数组转换为字符串。 -
注意
$tags是一个二维数组。您有$tags[$item]["name"]和$tags[$item]["id"],所以仅仅implode不会将其转换为扁平字符串。您想在 GET、name 或 id 上发送什么值? -
@h2ooooooo hmn sry 措辞不当,更新了第一行文本@fedorqui 我需要整个数组及其嵌套数组
-
(请注意,您不能在同一评论中对两个人使用@,只会通知第一个)您希望字符串的外观如何?
-
当我解析查询参数时,我希望拥有完整的数组及其访问权限,因此我正在寻找一种用嵌套数组字符串表示数组的方法,我用 var_dump($tags) 更新了答案在他们被发送之前