如何在php中将数组序列化为url queryString?

时间:2016-05-09 07:16:16

标签: php

我需要转换一个这样的数组:

$arr = array(1, 2, 3) ; 

采用以下格式:

arr[0]=1&arr[1]=2&arr[2]=3

在php中是否有任何内置函数或者我必须自己创建这个函数?

2 个答案:

答案 0 :(得分:3)

预期输出应该在输入数据数组中需要键名,见下文及之后使用http_build_query()函数创建查询字符串

<?php 
$arr = array("arr" => array(1, 2, 3)) ; 
echo http_build_query($arr);
?>

编码输出默认值

  

ARR%5B0%5D = 1&安培; ARR%5B1%5D = 2及ARR%5B2%5D = 3

如果你需要解码输出那么

<?php 
$arr = array("arr" => array(1, 2, 3)) ; 
echo urldecode(http_build_query($arr));
?>
  

ARR [0] = 1&安培;常用3 [1] = 2及常用3 [2] = 3

答案 1 :(得分:0)

您可以使用http_build_query但只需进行一些调整:

<?php 
$arr = array(1, 2, 3); 
$arr = http_build_query($arr,"arr[");
echo preg_replace('/\[\d/', '\\0]', $arr);

输出:

arr[0]=1&arr[1]=2&arr[2]=3

这里是demo

或者,您也可以使用:

<?php 
$arr = array(1, 2, 3);
foreach ($arr as $key => $value) { 
  $serialized[] = "arr[$key]=$value"; 
} 
echo implode("&",$serialized);

正如@ Bob0t在评论中提到的那样,他说它更快:)