首页 > 解决方案 > 优化多维数组创建

问题描述

我在一个数组中有一个数组键和嵌套级别的列表,例如:

$keys[0] = 'first';
$keys[1] = 'second';
$keys[2] = 'third';

如何将其转换为以下格式的多维数组:

$array['first']['second']['third'] = 'value';

我尝试了几种不同的变体,但都没有奏效,并且键覆盖了自己。最简单的方法是计算键的数量并手动覆盖每个场景,但这几乎没有优化并且不会动态增长。

$keyLen = count($keys);

if ($keyLen == 1) {
    $array[$keys[0]] = 'value;
} elseif ($keyLen == 2) {
    $array[$keys[0]][$keys[1]] = 'value;
} elseif ($keyLen == 3) {
    $array[$keys[0]][$keys[1]][$keys[2]] = 'value';
} ...

需要注意的是,该值并不重要,它是数组键的嵌套,我无法更改初始数组格式。

标签: phparraysoptimizationmultidimensional-array

解决方案


您可以向后遍历输入数组并在执行过程中包装先前的结果:

$nested = 'value';
for (end($keys); key($keys)!==null; prev($keys)){
    $nested = [current($keys) => $nested];
}

最后$nested将具有所需的结构。


推荐阅读