一尘不染

如何通过$ _GET在php中传递数组?

php

如何通过$ _GET将数组类型的一个或多个变量传递给另一页?

我总是以以下形式传递变量值 ?a=1&b=2&c=3

那传球a=[1,2,3]呢?

我是否需要编写一个for循环并附加所有值?

谢谢


阅读 475

收藏
2020-05-29

共1个答案

一尘不染

您可以使用[]语法通过_GET传递数组:

?a[]=1&a[]=2&a[]=3

PHP理解此语法,因此$_GET['a']等于array(1, 2, 3)

您还可以指定键:

?a[42]=1&a[foo]=2&a[bar]=3

多维数组也可以工作:

?a[42][b][c]=1&a[foo]=2

http_build_query() 自动执行此操作:

http_build_query(array('a' => array(1, 2, 3))) // "a[]=1&a[]=2&a[]=3"

http_build_query(array(
    'a' => array(
        'foo' => 'bar',
        'bar' => array(1, 2, 3),
     )
)); // "a[foo]=bar&a[bar][]=1&a[bar][]=2&a[bar][]=3"

一种替代方法是传递json编码的数组:

?a=[1,2,3]

您可以解析ajson_decode

$a = json_decode($_GET['a']); // array(1, 2, 3)

并再次使用json_encode对其进行编码:

json_encode(array(1, 2, 3)); // "[1,2,3]"

切勿serialize()为此目的使用。序列化允许序列化对象,并且有使它们执行代码的方法。因此,您永远不要反序列化不受信任的字符串。

2020-05-29