具有嵌套数组的php数组作为查询参数implode / explode

时间:2014-03-22 11:16:40

标签: php arrays symfony get

我必须使用嵌套数组发送此数组

            $tags=[];
            foreach ($importedTags->tags as $key => $value) {
                $tags[]=array(
                    "name"=>$value->getName(),
                    "id"=>$value->getId(),
                );
            }

数组(如果有3个importedTags)可能如下所示:

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" } 
}

作为网址上的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新手,所以我怎么能解决这个问题并得到一个字符串表示,就像我试图用内爆和爆炸来获得带有这种嵌套数组的数组?

1 个答案:

答案 0 :(得分:2)

将params的生成更改为:

$params=[];
foreach ($importedTags->tags as $key => $value)
{
    $params[]=$value->getName() .'|'. $value->getId();
}

$this->redirect($this->generateUrl('my_route.create_sth',$params));

在另一个网站上:

$tags=[];
foreach ($params as $param)
{
    $paramArray = split('|', $param);
    $tags[$paramArray[0]]=$paramArray[1];
}

你有嵌套数组。

祝你好运