Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数值数组创建金字塔状数组_Php_Arrays_Recursion - Fatal编程技术网

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],所以我想从中构建金字塔,以便与模式匹配。