【问题标题】:How to pass a multidimensional associative array in URL [duplicate]如何在 URL 中传递多维关联数组 [重复]
【发布时间】:2013-07-30 23:31:35
【问题描述】:

我已经在谷歌上搜索了几个小时,但我无法从中找出正面或反面。我有一个像这样的多维关联数组:

$mArray = array(
   array("m" => "0"),
   array("m" => "1"),
   array("m" => "1")
   );

我想用 PHP GET 请求创建数组:

mywebsite.com/file.php?.......what do I put here?.....

【问题讨论】:

    标签: php arrays multidimensional-array get associative-array


    【解决方案1】:

    你需要像这样使用数组访问表示法

    mywebsite.com/file.php?item[0][m]=0&item[1][m]=1&item[2][m]=1
    

    使用嵌套循环来构建这个字符串会很简单 - 不要忘记对值进行 URL 编码

    $query_string = '';
    foreach($mArray as $key => $array) {
        foreach($array as $k => $v) {
            $query_string .= 'item[' . urlencode($key) . '][' . urlencode($k) . ']=' . urlencode($v) . '&';
        }
    }
    $query_string = substr($query_string, 0, 1); // trim extra &
    

    如果您需要处理任意维度的数组,您显然可以将其修改为一个函数,该函数可以递归调用以达到尽可能多的级别。

    【讨论】:

    • 谢谢,我似乎无法让它工作...$mArray 不应该在 URL 中的某个位置吗?
    • @Youss 我只是将item 作为参数名称,因为您没有指定您希望传递参数的名称。您可以简单地将item 替换为您选择的任何参数名称。
    • 整个事情首先取决于“获取” URL,我如何使用 GET 来做到这一点?
    • @Youss 所以我认为您想获取$mArray 中的值并通过$_GET 传递到另一个页面,因此您需要构建查询字符串。不管逻辑是一样的。如果您尝试从 GET 请求中填充 $mArray,您只需要按照我显示的那样格式化查询字符串。
    • @Yous 所以现在您应该知道查询字符串中传递数组所需的格式(任意数量的维度,因为您只需添加新括号以添加维度)。您应该知道如何从现有的 PHP 数组创建这样的查询字符串。所以希望你应该有你需要的东西。
    猜你喜欢
    • 2015-11-09
    • 2021-09-25
    • 1970-01-01
    • 2021-05-01
    • 2021-12-13
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    相关资源
    最近更新 更多