dev*_*212 5 php arrays multidimensional-array
如果一个问题我现在尝试解决几个小时,但根本无法找到解决方案.
如果是单个路径数组
$singleArray = array(
'/Web',
'/Web/Test1',
'/Web/Test2',
'/Web/Test2/Subfolder',
'/Web/Test3',
'/Public'
);
Run Code Online (Sandbox Code Playgroud)
从该数组我想创建一个多维数组,它保留键,但将子文件夹放在正确的父文件夹中.后来我想循环遍历新数组以创建文件夹树(但这不是问题)
新数组应如下所示:
$multiArray = array(
'/Web'=>array(
'/Web/Test1'=>array(),
'/Web/Test2'=>array(
'/Web/Test2/Subfolder'=>array()
),
'/Web/Test3'=>array()
),
'/Public'=>array()
);
Run Code Online (Sandbox Code Playgroud)
小智 5
下面的代码将生成您想要的数组.解决问题的关键是每次迭代都要创建对数组的引用.
<?php
$singleArray = array(
'/Web',
'/Web/Test1',
'/Web/Test2',
'/Web/Test2/Subfolder',
'/Web/Test3',
'/Public'
);
$multiArray = array();
foreach ($singleArray as $path) {
$parts = explode('/', trim($path, '/'));
$section = &$multiArray;
$sectionName = '';
foreach ($parts as $part) {
$sectionName .= '/' . $part;
if (array_key_exists($sectionName, $section) === false) {
$section[$sectionName] = array();
}
$section = &$section[$sectionName];
}
}
Run Code Online (Sandbox Code Playgroud)