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


Turn array values from a single dimension array into the depth of another array

假设我有以下数组:

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

我需要这些值作为以下数组的键,按顺序/深度排列:

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

让您了解以下内容:

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是对最近嵌套的数组的引用。

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