如何在PHP中从数组中创建嵌套数组

如何在PHP中从数组中创建嵌套数组,php,arrays,nested,iteration,Php,Arrays,Nested,Iteration,比如说,我们有一个数组:array(1,2,3,4,…) 我想把它转换成: array( 1=>array( 2=>array( 3=>array( 4=>array() ) ) ) ) 有人能帮忙吗? 谢谢 编辑有迭代的解决方案会很好。好吧,试试这样的方法: $in = array(1,2,3,4); // Array with incom

比如说,我们有一个数组:
array(1,2,3,4,…)
我想把它转换成:

array(
    1=>array(
        2=>array(
            3=>array(
                4=>array()
            )
        )
    )
)
有人能帮忙吗?
谢谢


编辑有迭代的解决方案会很好。

好吧,试试这样的方法:

$in  = array(1,2,3,4); // Array with incoming params
$res = array();        // Array where we will write result
$t   = &$res;          // Link to first level
foreach ($in as $k) {  // Walk through source array
  if (empty($t[$k])) { // Check if current level has required key
    $t[$k] = array();  // If does not, create empty array there
    $t = &$t[$k];      // And link to it now. So each time it is link to deepest level.
  }
}
unset($t); // Drop link to last (most deep) level
var_dump($res);
die();
输出:

array(1) {
  [1]=> array(1) {
    [2]=> array(1) {
      [3]=> array(1) {
        [4]=> array(0) {
        }
      }
    } 
  }
} 

我认为要创建的多维数组的语法如下所示

$array = array(

   'array1' => array('value' => 'another_value'), 
   'array2' => array('something', 'something else'),
   'array3' => array('value', 'value')
);

这就是您想要的吗?

您只需创建一个递归函数:


您也可以在一行中使用此命令:

$array=Arr::setNestedElement([],'1.2.3.4','value');

听起来有点不合逻辑。你需要它做什么?Q.如何从数组中制作一些东西?使用循环。是否愿意与我们分享您为什么要这样做?很难想象你会需要它。我正在学习php,想练习数组。@你的常识,有时甚至更好,一个递归函数。我认为这是最清晰的解决方案,只要看一眼就可以知道它的功能。在基本情况下,您可能应该返回一个空数组。是的,这可能是一个优雅的解决方案,但我需要一个迭代的解决方案。谢谢你的帮助:)。完成同一项任务有这么多方法。我不明白为什么会有人对此投反对票@那么你的问题应该提到这一点@MrFix:可以用来构造数组的思维过程显然是递归的(通常是嵌套任务),这种解决方案的优点是清晰简洁。如果你的目标是练习,你最好现在就养成好习惯:-)。@Blackhole,我正在一步一步地学习,我认为学习其他可能的解决方案对我也有好处。感谢您的建议:)…显然这不是示例输入(不是说很难转换为OP的数据类型)为什么这个答案会被投票否决?!?它根本不提供任何转换代码。
$x = count($array) - 1;
$temp = array();
for($i = $x; $i >= 0; $i--)
{
    $temp = array($array[$i] => $temp);
}