Php 从数值数组创建金字塔状数组
我的问题如下: 我正在寻找一种算法,它使Php 从数值数组创建金字塔状数组,php,arrays,recursion,Php,Arrays,Recursion,我的问题如下: 我正在寻找一种算法,它使$array1看起来像$pyramid 我有这个阵列: $array1 = [ 'foo', 'baz', 'bar', 'apple' ]; 我想从$array1创建一个新数组($pyramid),如下所示: $pyramid = [ 'foo' => [ 'baz' => [ 'bar' => [ 'apple' =>
$array1
看起来像$pyramid
我有这个阵列:
$array1 = [
'foo',
'baz',
'bar',
'apple'
];
我想从$array1
创建一个新数组($pyramid
),如下所示:
$pyramid = [
'foo' => [
'baz' => [
'bar' => [
'apple' => ' '
]
]
]
];
示例
$array1
有4个元素,但它可以任意长,因此该算法应该适用于任何维度。您的意思是:
$pyramid = [];
$pyramidPtr = &$pyramid;
foreach ($array1 as $element) {
$pyramidPtr[$element] = null;
$pyramidPtr = &$pyramidPtr[$element];
}
unset($pyramidPtr);
var_dump($pyramid);
您可以将
array\u walk
与array\u reverse
一起使用,如下所示
$reversed = array_reverse($array1);
$result = [];
array_walk($reversed,function($v,$k)use(&$result){
$result = $v ? [$v => $result] : "";
});
print_r($result);
到目前为止您都尝试了什么?你为什么这么想?嗯,这很难解释。我想在我的网站上使用它进行配置设置。我创建了一个数组(现在调用模式),其中包含输入字段的所有详细信息,如:名称、值、类型、最小/最大规则占位符等。但是,在这种模式中,这些字段的每一个都是空的。我有另一个带有设置的数组,但我定义了如下设置:display/name/something,rules/min/50等。所以我将这些字符串分解为/,它生成了一个数组,如:$spolded['display','name','something],所以我想从中构建金字塔,以便与模式匹配。