在 PHP 中动态地将元素作为子元素添加到数组

Adding elements to array as sub-elements dynamically in PHP

我想找到解决以下问题的方法:

我有 n 个向量(唯一),如下所示:("val1", "val2", "val3", ..., "valn" )。 每个向量的长度都不同。

我想在新数组中添加其中任何一个,但是使用向量值(val1,val2,val3)元素作为新数组递归的子元素,取自主向量(val1 => val +1 => val+2 => val+3 => ... val+n => solution),并且向量的最后一个元素是整数或字符串(不是 sub-array/vector 作为其他) ,它将与新数组的最后一个元素匹配,它是新数组的 soluton/target.

我现在应用的解决方法是: 假设目标(解决方案)是数组的结束值(整数或字符串)。 在这种情况下,我想处理一个包含 4 个元素的向量,其中最后一个是解决方案。

$vector = array("val1", "val2", "val3", "target");
$count = count($vector);
$new_array = array();
switch($count){
case 1:
....
case 4:
$new_array[$vector[0]][$vector[1]][$vector[2]] = $vector[3];
/*New array will be
$new_array = [
val1 => 
  val2 => 
    val3 => "target"
];
*/
break;
}

我使用的矢量很多,大小也不同,所以 solution/target 可以在第一个元素、第二个、第三个等等,所以我在我的开关中应用了从 0 到 5 的任何情况例如,如上所述工作。

我认为可能有更好的解决方案,在 for(或更好,一段时间)循环内循环 但我目前对它应该如何做一无所知,而且我没有在网络上找到任何解决方法。

有人有解决办法吗? 提前致谢

您好
您可以像这样更改您的代码:

<?php

$vector = array("val1", "val2", "val3", "val4", "val5", "target");
$count = count($vector);
$new_array = array();

$new_array[$vector[$count - 2]] = $vector[$count - 1];

for ($i=($count - 3); $i >= 0; $i--) {
    $temp_array = array();
    $temp_array[$vector[$i]] = $new_array;
    $new_array = $temp_array;
}

print_r($new_array);

结果会是这样的:

Array
(
    [val1] => Array
        (
            [val2] => Array
                (
                    [val3] => Array
                        (
                            [val4] => Array
                                (
                                    [val5] => target
                                )

                        )

                )

        )

)

您可以从最近的嵌套元素开始构建结果数组:

$vector = array("val1", "val2", "val3", "val4", "val5", "target");

$new_array = array_pop($vector);

foreach(array_reverse($vector) as $val) {
    $new_array = [$val => $new_array];
}

print_r($new_array);