将数组值从单个维度数组转换为另一个数组的深度

时间:2015-11-07 23:52:39

标签: php arrays

所以我想说我有以下数组:

$value = 'x';

$foo = Array(
  0 => 'arraydepth1',
  1 => 'arraydepth2',
  2 => 'arraydepth3',
  3 => 'arraydepth4'
)

我需要将值作为以下数组的顺序/深度的键:

$bar['arraydepth1']['arraydepth2']['arraydepth3']['arraydepth4'] = 'x';

1 个答案:

答案 0 :(得分:4)

绕过这个:

function nest(Array $a, $lastValue) {
    $out = [];
    $ref =& $out;
    foreach ($a as $b) {
        $ref[$b] = [];
        $ref =& $ref[$b];
    }
    $ref = $lastValue;
    return $out;
}
var_dump(nest($foo, $value));

解释时有点费解,但这是我的尝试:

  • $out变量只是一个将在函数末尾返回的数组。

  • $ref是对最近嵌套数组的引用。

  • 在循环中,我们不断向引用添加数组,然后将引用设置为添加的数组。