$files = [];
$za = new ZipArchive();
// получаем список файлов из архива
$za->open('/path/to/your.zip');
for( $i = 0; $i < $za->numFiles; $i++ ){
$stat = $za->statIndex( $i );
if(substr($stat['name'], -1, 1) !== '/') {
$files[] = $stat['name'];
}
}
// строим массив
function buildArray($array) {
rsort($array);
$result = [];
foreach ($array as $item) {
$parts = explode('/', $item);
$current = &$result;
for ($i = 1, $max = count($parts); $i < $max; $i++) {
if (!isset($current[$parts[$i - 1]])) {
$current[$parts[$i - 1]] = [];
}
$current = &$current[$parts[$i - 1]];
}
$last = end($parts);
if (!isset($current[$last]) && $last) {
$current[] = end($parts);
}
}
return $result;
}
print_r(buildArray($files));
есть простор для оптимизации, но мне лениво этим заниматься.
для замены старого mysql_* есть полифилы и под mysqli и под pdo.