为了账号安全,请及时绑定邮箱和手机立即绑定

将数组作为url参数传递

/ 猿问

将数组作为url参数传递

PHP
一只甜甜圈 2019-10-12 07:07:33

将数组作为url参数传递

作为url参数传递数组的最佳方法是什么?我在想,如果这是可能的话:

$aValues = array();$url = 'http://www.example.com?aParam='.$aValues;

或者这个怎么样:

$url = 'http://www.example.com?aParam[]='.$aValues;

我读过一些例子,但我发现它很混乱:

$url = 'http://www.example.com?aParam[]=value1&aParam[]=value2&aParam[]=value3';


查看完整描述

3 回答

?
富国沪深

有一个非常简单的解决方案:http_build_query()..它将查询参数作为关联数组:

$data = array(
    1,
    4,
    'a' => 'b',
    'c' => 'd');$query = http_build_query(array('aParam' => $data));

会回来

string(63) "aParam%5B0%5D=1&aParam%5B1%5D=4&aParam%5Ba%5D=b&aParam%5Bc%5D=d"

http_build_query()为您处理所有必要的逃逸(%5B => [%5D => ]),因此字符串等于aParam[0]=1&aParam[1]=4&aParam[a]=b&aParam[c]=d.



查看完整回答
反对 回复 2019-10-13
?
aluckdog

不要错过上面Stefan的解决方案,它使用了非常方便的http_build_query()职能:https://stackoverflow.com/a/1764199/179125

Knittl是关于逃跑的。然而,有一种更简单的方法可以做到这一点:

$url = 'http://example.com/index.php?';$url .= 'aValues[]=' . implode('&aValues[]=', array_map('urlencode', $aValues));

如果要使用关联数组执行此操作,请尝试以下操作:

PHP 5.3+(Lambda函数)

$url = 'http://example.com/index.php?';$url .= implode('&', array_map(function($key, $val) {
    return 'aValues[' . urlencode($key) . ']=' . urlencode($val);
  },
  array_keys($aValues), $aValues));

PHP<5.3(回调)

function urlify($key, $val) {
  return 'aValues[' . urlencode($key) . ']=' . urlencode($val);}$url = 'http://example.com/index.php?';$url .= implode('&amp;', array_map('urlify', array_keys($aValues), $aValues));



查看完整回答
反对 回复 2019-10-13
?
慕的地2183247

最简单的方法是使用serialize功能。

它序列化用于存储或传输的任何变量。你可以在PHP手册-序列化

变量可以通过使用unserialize

因此,在传递给您使用的URL时:

$url = urlencode(serialize($array))

并恢复您使用的变量

$var = unserialize(urldecode($_GET['array']))

不过这里要小心。GET请求的最大大小限制在4k,您可以通过在URL中传递数组轻松地超过它。

而且,它确实不是传递数据的最安全的方式!您可能应该考虑使用会话代替。



查看完整回答
反对 回复 2019-10-13

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信