我有一个数组中包含的数据,就像这样,
$file['info']['files'] = array(
[0] => array(
'length' => (int),
'path' => array (
[0] => 'file.txt',
),
),
[1] => array(
'length' => (int),
'path' => array (
[0] => 'directory one',
[1] => 'file2.txt',
),
),
[2] => array(
'length' => (int),
'path' => array (
[0] => 'directory one',
[1] => 'directory two',
[2] => 'file3.txt',
),
),
);
$file['info']['files']
数组可以包含任意数量的元素。每个数组中path
包含的$file['info']['files']
数组是我遇到问题的地方。
它包含有关文件结构的信息。如果仅存在 1 个元素,则它是一个文件。如果存在多个元素,则从顶部开始的每个元素都是下一个元素的父文件夹,最后一个元素是最后一个文件夹中的文件。以上面的示例为例,文件结构为
FILE file1.txt
FOLDER directory one
FILE file2.txt
FOLDER directory two
FILE {file3.txt}
我想将这些数据提取到我自己的数组结构中,如下所示,
$sortedFiles = array(
'file1.txt' => (int),
'directory one' => array(
'file2.txt' => (int),
'directory two' => array(
'file3.txt' => (int),
),
),
);
到目前为止我有这个代码,
foreach($file['info']['files'] as $file) {
// LENGTH AND PATH ARE SET
if(isset($file['length'], $file['path'])) {
// GET COUNT OF FILE PATH ARRAY
$count = count($file['path']);
// SINGLE FILE
if($count == 1) {
$sortedFiles[$file['path'][0]] = $file['length'];
// FILES IN DIRECTORY
} else {
// BUILD ARRAY STRUCTURE FOR DIRECTORIES
}
}
}
在将目录添加到数组时我遇到了麻烦。我可以手动完成,每次检查目录的数组是否存在,如果不创建它,如果它确实存在,则添加到它。我用下面的代码尝试了这个,但它只深入一个目录(代码在上面所说// BUILD ARRAY STRUCTURE
的地方)。
// FOLDER NOT SET
if(!isset($files[$file['path'][0]])) {
$sortedFiles[$file['path'][0]] = array($file['path'][1] => $file['length'],);
// FOLDER SET
} else {
$sortedFiles[$file['path'][0]][$file['path'][1]] = $file['length'];
}
如何为每个存在的目录动态创建数组并添加所需的信息,同时记住目录结构可以是任意数量的级别?
感谢您花时间阅读我相当长的问题,我感谢任何人给我的任何帮助。