2012-07-28 55 views
1

在php中做簡單的ftp查看器:Php數組(少數)foreach獲取值

我有一個返回數組與file_name的函數。

我(在我的函數結束)print_r($files);,這是出把

Array ([0] => task_manager.zip [1] => 1086237 [2] => zip) Array ([0] => asd.zip [1] => 1086237 [2] => zip [3] => fonts/some_file.zip [4] => 959224 [5] => zip) 

正如你可以看到我得到的陣列,這是完美的,但後來我想FILE_NAME,FILE_SIZE & FILE_EXTENSION我得到失敗:

PS - ListFiles - 是我的函數名,('fonts/') - 文件夾,我發現文件

foreach (ListFiles('fonts/') as $key=>$file){ 
    echo 'file_name = '.$file."<br/>"; 
} 

,我得到:

file_name = task_manager.zip 
file_name = 1086237 
file_name = zip 
file_name = fonts/some_file.zip 
file_name = 959224 
file_name = zip 

這實際上是錯誤的,因爲我想這樣做在一條線,像這樣:

我想(接近完美的方式)做這樣的事情:

在PHP

foreach (ListFiles('fonts/') as $key=>$file){ 
    echo 'file_name = '.$file[0].'file_size = '.$file[1].'file_ext = '.$file[2].'<br/>'; 
} 

在HTML:

file_name = task_manager.zip, file_size = 1086237, file_ext = zip 
file_name = some_file.zip, file_size = 959224, file_ext = zip 

UPDATE:MY ListFiles功能

function ListFiles($dir) { 
    if($dh = opendir($dir)) { 

       //This data I get from form 
     $allowedExts = array(); 
     if(isset($_POST['exts'])){ 
      for ($i=0; $i < count($_POST['exts']); $i++){ 
       array_push($allowedExts, $_POST['exts'][$i]); 
      } 
     } // end of this data 

     $files = Array(); 
     $inner_files = Array(); 
     while($file = readdir($dh)) { 
      if($file != "." && $file != ".." && $file[0] != '.') { 
       if(is_dir($dir . "/" . $file)) { 
        $inner_files = ListFiles($dir . "" . $file); 
        if(is_array($inner_files)) 
         $files = array_merge($files, $inner_files); 
       } else { 
        if(in_array(end(explode('.', $file)), $allowedExts)){ 
         $filesize = filesize('./'.$dir.$file); 
         $userfile_extn = substr($file, strrpos($file, '.')+1); 
         array_push($files, $dir . "/" . $file, $filesize, $userfile_extn); 

        }     
       } 
      } 
     } 

     closedir($dh); 
     return $files; 
    } 
} 
+0

如何展示你的'ListFiles'功能的源代碼? – DCoder 2012-07-28 16:14:57

+0

我們需要你的'ListFiles()'函數,因爲有一種更好的方法來設置你的數組。 – David 2012-07-28 16:16:09

+0

補充說,對不起我這個.. – 2012-07-28 16:22:38

回答

0

最簡單的方法:

$files = ListFiles('fonts/'); 
for ($i = 0; $i < count($files); $i += 3){ 
    echo 'file_name = '.$files[$i].'file_size = '.$files[$i+1].'file_ext = '.$files[$i+2].'<br/>'; 
} 

更好的辦法:

http://pastie.org/4567820