1 回答

TA贡献1806条经验 获得超8个赞
通常你会使用array_merge_recursive来实现这一点,但它不会保留命名键,所以我写了一个小array_join
函数来让生活更轻松:)
function array_join($value, &$result) {
if (!is_array($value)) {
$result = $value;
return;
}
foreach ($value as $k => $v) {
array_join($v, $result[$k]);
}
}
$result = [];
foreach ($mainArray as $entry)
{
parse_str($entry['name'] . '=' . $entry['value'], $nameArray);
array_join($nameArray, $result);
}
我们只需递归调用 array_join 直到该值不再是数组。注意&
中&$result
的array_join
. 我们传递数组中当前位置的引用。
为了充分利用parse_str
我还通过附加添加了该值=<value>
工作示例。
为您的下一篇文章提供专业提示。使用var_export给我们一个数组,可以将其复制粘贴为代码:)
编辑
更简单的解决方案,带有“邪恶”输入的转义值。
foreach ($mainArray as $entry)
{
$stringVarArray[] = $entry['name'] . '=' . urlencode($entry['value']);
}
parse_str(implode('&', $stringVarArray), $result);
var_dump($result);
工作示例。
- 1 回答
- 0 关注
- 105 浏览
添加回答
举报