【发布时间】:2014-07-26 06:08:11
【问题描述】:
如何将多个小数组转换为单个多维数组。
我有一个主大数组,其中包含这样的小数组。
Array
(
[0] => Array
(
[length] => 1073709056
[path] => Array
(
[0] => VIDEO TS
[1] => VTS_02_3.VOB
)
)
[1] => Array
(
[length] => 1073709056
[path] => Array
(
[0] => VIDEO TS
[1] => VTS_02_1.VOB
)
)
[2] => Array
(
[length] => 1073709056
[path] => Array
(
[0] => VIDEO TS
[1] => VTS_02_4.VOB
)
)
[3] => Array
(
[length] => 1073709056
[path] => Array
(
[0] => VIDEO TS
[1] => VTS_02_2.VOB
)
)
[4] => Array
(
[length] => 295792640
[path] => Array
(
[0] => VIDEO TS
[1] => VTS_02_5.VOB
)
)
[5] => Array
(
[length] => 39620608
[path] => Array
(
[0] => VIDEO TS
[1] => VTS_01_1.VOB
)
)
[6] => Array
(
[length] => 274893
[path] => Array
(
[0] => Cover & Label
[1] => This Is 40 (2012) label.jpg
)
)
[7] => Array
(
[length] => 197602
[path] => Array
(
[0] => Cover & Label
[1] => This Is 40 (2012) cover.jpg
)
)
[8] => Array
(
[length] => 88064
[path] => Array
(
[0] => VIDEO TS
[1] => VTS_02_0.BUP
)
)
[9] => Array
(
[length] => 88064
[path] => Array
(
[0] => VIDEO TS
[1] => VTS_02_0.IFO
)
)
[10] => Array
(
[length] => 64109
[path] => Array
(
[0] => INFO TBS
[1] => silver torrent logo.jpg
)
)
)
[length] 是文件大小。
[path] 是文件路径。
如果 [path] 中的元素大于 1,则除最后一个元素之外的所有元素都是父目录顺序,而最后一个元素是文件名。 像这样
Array
(
[length] => 64109
[path] => Array
(
[0] => directory
[1] => sub-directory
[2] => silver torrent logo.jpg
)
)
如何将上面的数组转换为下面的数组。
Array
(
[directory1] Array(
[file1.jpg] => 197602
[file2.jpg] => 274893
)
[directory2]Array(
[file1.txt] => 41
[file2.txt] => 41
[sub-directory1]Array(
[file1.txt] => 41
[file2.txt] => 44
[file3.txt] => 54
)
)
[file1.txt] => 41
[file2.txt] => 47
)
到目前为止,我已经这样做了
foreach($old_files as $x)
{
if (isset($x['path'][1])){
//$path=$x['path'][0];
$path = @iconv('utf-8', 'utf-8//ignore', $x['path'][0]);
$path1 = @iconv('utf-8', 'utf-8//ignore', $x['path'][1]);
$files[$path][$path1] = $x['length'];
}else{
$path = @iconv('utf-8', 'utf-8//ignore', $x['path'][0]);
$files[$path] = $x['length'];
}
}
以上代码适用于一级深度数组,但不适用于多级深度数组。
我该如何解决这个问题?
【问题讨论】:
-
目录中的文件怎么办?这可能吗?那么目录 asd 和目录 asd/asd/asd/asd/asd.jpg 呢?如何区分它们?
-
是的,目录中也有目录。我们可以使用数组元素的数量来区分它们,最后一个元素是文件名。
-
是否有可能某些目录具有相同的名称?如果是这样,我们就无法知道哪个是父目录。
-
是的,可以,但是每个数组都包含目录顺序,请检查更新的问题。
-
哎呀,错过了那部分,感谢您指出这一点