【问题标题】:php array with nested arrays as query parameter implode/explode带有嵌套数组的 php 数组作为查询参数 implode/explode
【发布时间】: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) 更新了答案在他们被发送之前

标签: php arrays symfony get


【解决方案1】:

将参数的生成更改为:

$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];
}

你有嵌套数组。

祝你好运

【讨论】:

    猜你喜欢
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 2012-01-21
    • 2018-06-13
    • 2012-08-13
    相关资源
    最近更新 更多