传递GET时表示多维数组

时间:2011-05-27 02:42:16

标签: php

有没有办法表示/传递像

这样的多维数组
array( array('foo' => 'bar') , array('language' => 'php'), ...);

进入GET字符串?

对于简单数组,例如

array(1,2,3,4)

我可以像这样代表

?ids=1,2,3,4

但我不知道如何表示多维数组

4 个答案:

答案 0 :(得分:3)

您使用与提交表单发布数据时相同的方括号表示法,例如

?array[][foo]=bar&array[][language]=php

$array = $_GET['array'];

答案 1 :(得分:2)

有几种方法可以做到。

一种方法是serialize(),然后在unserialize()页面上读取它。

另一种方法是json_encode()它,然后在json_decode()页面上读取它。

或者,按照你喜欢的CSV风格,你可以用不同的分隔符分隔数组的下一层,例如

array(
    0 => array(1, 2, 3),
    1 => array(4, 5, 6),
)

变为

?array=1|2|3,4|5|6

最后,PHP还将解析查询字符串中的数组,如:

?array[0][0]=1&array[0][1]=2&array[0][1]=3&array[1][0]=4&array[1][1]=5&array[1][1]=6

答案 2 :(得分:0)

我不知道有任何标准方法可以做到这一点。您可以使用空格字符作为行分隔符来自行滚动:

array( array(1, 2, 3, 4), array(5, 6, 7) );

变为

?ids=1,2,3,4+5,6,7

答案 3 :(得分:0)

您可以使用此方法来阻止任何歧义消除:

?ids=1|2|3|4||23|34|45

易于实施和阅读。

在接收方结束时,您只需要将GET参数分解回数组,例如:

$par=explode($_GET[ids],"||");

$par=explode($_GET[ids],"|");