我试图从一个zip文件创建一个关联数组,其中文件夹是键,文件是最里面的值.
目前,当我在zip文件中的每个条目上/上进行爆炸时,我得到类似这样的内容:
Array
(
[0] => Folder1
[1] => Folder2
[2] => File1.txt
)
Array
(
[0] => Folder1
[1] => Folder2
[2] => File2.txt
)
Array
(
[0] => Folder1
[1] => Folder3
[2] => File3.txt
)
要做到这一点,我这样做(在$path上做一个print_r):
if(in_array($content["ext"], array("zip"))){
$zip = zip_open($file);
while($zip_entry = zip_read($zip)){
$zip_path = zip_entry_name($zip_entry);
$path = explode("/", $zip_path);
$path = array_filter($path);
$lastElement = end($path);
foreach($path as $key => $item){
if($item != $lastElement){
}
}
}
}
print_r($files);
我想要的是$files包含一个多维数组,结果如下所示:
Array
(
[Folder1] => Array
(
[Folder2] => Array
(
[0] => File1.txt
[1] => File2.txt
)
[Folder3] => Array
(
[0] => File3.txt
)
)
)
没有深度的最佳方法是什么?
解决方法:
if (in_array($content["ext"], array("zip"))) {
$zip = zip_open($file);
$files = array();
while ($zip_entry = zip_read($zip)) {
$zip_path = zip_entry_name($zip_entry);
$path = explode("/", $zip_path);
$path = array_filter($path);
$lastElement = end($path);
//reset pointer
$cur = &$files;
$count = count($path);
//set pointer to proper parent folder
for ($i = 0; $i < $count - 1; $i++) {
$cur = &$cur[$path[$i]];
}
//add file
$cur[] = $path[$i];
}
//delete pointer
unset($cur);
}
print_r($files);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。