如何urlencode多维数组?

kra*_*tty 5 php arrays urlencode multidimensional-array

我已经搜索过高和低的解决方案.我有一个动态多维数组我需要分解和urlencode.项目数量将发生变化,但它们将始终具有相同的密钥.

$formFields = Array ( 
[0] => Array ( [form_name] => productID [form_value] => 13 ) 
[1] => Array ( [form_name] => campaign [form_value] => email@gmail.com ) 
[2] => Array ( [form_name] => redirect [form_value] => http://example.com ) ) 
Run Code Online (Sandbox Code Playgroud)

每个数组都有一个表单名称和一个表单值.

这就是我想要达到的目的:

$desired_results = 
productID => 13
campaign => email@gmail.com
redirect => http://example.com
Run Code Online (Sandbox Code Playgroud)

每当我尝试将它们拆分时,我最终得到:form_name => productID或类似的东西.

我正在尝试取结果,然后对它们进行urlencode:

productID=13&campaign=email&gmail.com&redirect=http://example.com&
Run Code Online (Sandbox Code Playgroud)

emu*_*tac 18

你可以使用序列化和反序列化:

$str = urlencode(serialize($formFields));
Run Code Online (Sandbox Code Playgroud)

然后解码它:

$formFields = unserialize(urldecode($str));
Run Code Online (Sandbox Code Playgroud)

  • 如果它只是一个数组,`json_encode()`/`json_decode()`更喜欢`serialize()`,因为它具有更简单的结构并导致更短的字符串.它也更便携(比如`JS`等) (3认同)

And*_*ien 4

无论键的名称如何,这都会返回值。

$result = array();

foreach ($formFields as $key => $value)
{
  $tmp = array_values($value);
  $result[$tmp[0]] = $tmp[1];
}
print(http_build_query($result));
Run Code Online (Sandbox Code Playgroud)

循环foreach遍历主数组,将子数组存储在变量 中$value。函数array_values将每个数组中的所有值作为新的数值数组返回。[form_name] 的值将存储在第一个索引中,[form_value] 将存储在第二个索引中。

内置的http_build_query函数将返回一个 urlencoded 字符串。