php - 将平面数组转换为多维数组
问题描述
想象一下有一个这样的数组:
[
'key1' => 'Label 1',
'key2' => 'Label 2',
'key3' => 'Label 3'
];
如何将其转换为这样的多维数组:
[
'key1' => [
'key1' => 'Label 1',
'key2' => [
'key2' => 'Label 2',
'key3' => [
'key3' => 'Label 3',
],
],
],
];
我想到了一些带有递归函数和 array_shift 的东西,但我不确定如何编写它。
数组的嵌套深度应与元素的数量一样深。
解决方案
这是一种使用循环的方法,维护一个指向输出数组的指针,因此我们可以简单地将值进一步推入其中:
$result = array();
$r = &$result;
foreach ($arr as $k => $v) {
$r[$k] = array($k => $v);
$r = &$r[$k];
}
print_r($result);
输出:
Array
(
[key1] => Array
(
[key1] => Label 1
[key2] => Array
(
[key2] => Label 2
[key3] => Array
(
[key3] => Label 3
)
)
)
)
推荐阅读
- c# - 从 C# 运行 PowerShell 脚本
- javascript - 遵循中继分步指南时出现 AST 节点错误
- xcode - 如何从 CLI 构建 DocC 文档
- r - ggplot:有没有更简洁的方式使用主题背景?
- elasticsearch - elasticsearch节点不活跃
- google-sheets - 从工作表 1 中的单元格中调用工作表名称以从具有自定义名称的工作表中调用数据
- nginx - 不要写端口并添加应用程序名称以进行远程访问
- javascript - JSON API 返回未定义
- c# - 创建插入操作,但是在从 Model StudentView -> Student 转换并传递到 InsertStudentAsync 之后,函数返回 null
- python - 在这门课上我可以做得更好吗?Python 类重构