2013-08-17 347 views
0
function printAll($dirName) 
{ 
    if (empty($leid)) { $leid = "1"; } 
    $root = $_SERVER['DOCUMENT_ROOT']; 
    $site = $_GET['site']; 
    $user = $_GET['user']; 
    $tag = ""; 
    $dirs=array($dirName); 
    $files=array(); 
    while($dir=array_pop($dirs)){ 
     $handle=opendir($dir); 
     while($file=readdir($handle)){ 
      if($file!='.' && $file!='..'){ 
       $dest=$dir.'/'.$file; 
       $userid = str_replace("$root/", "", $dir); 
       $userid = str_replace("dl/$site","",$userid); 
       $userid = str_replace("/","",$userid); 
       if(is_file($dest)){ 
        $files[]=$file; 

        $titrepost = htmlspecialchars($file); 

        $downloadlink = "$dest"; 
        $downloadlink = str_replace("$root/", "", $downloadlink); 

        $za = new ZipArchive(); 
        $za->open($downloadlink); 

        $leid = $leid + 1; 
        echo "<br> 
        <b>File = $file</b><br> 
        Userid = $userid 
        <br>"; 
        for($i = 0; $i < $za->numFiles; $i++){ 
         $stat = $za->statIndex($i); 
         $toune = basename($stat['name']); 
         echo "$toune <br>"; 
        } 

       } else { 
        $dirs[]=$dest; 
       } 
      } 
     } 
    } 
    return $files; 
} 


$site = $_GET['site']; 
$currentdir = getcwd(); 
$source = "$currentdir/dl/$site"; 
if (!empty($user)) { 
    $source = "$currentdir/dl/$site/$user"; 
} 
printAll($source); 

此腳本將列出ZIP檔案中的所有文件,然後回顯每個文件的名稱。按字母順序排序結果

現在我遇到了一些麻煩搞清楚如何將文件名排序($ toune)按字母順序

這裏是我的嘗試:

for($i = 0; $i < $za->numFiles; $i++){ 
    $stat = $za->statIndex($i); 
    $toune_arr[] = basename($stat['name']);   
} 
asort($toune_arr); 
print_r($toune_arr); 

但它並不適用於該代碼工作,$在列出每個zip文件後,toune_arr將不會清空,因此每次腳本輸出文件列表時,它都會包含以前zip文件的文件。

+1

'$ toune_arr =陣列();'將清空'$ toune_arr' – bansi

回答

0

只是重置您的數組中的函數的開頭:

function printAll($dirName) 
{ 
    $toune_arr = array(); 
    ...