2012-09-26 49 views
1

我想讀一個目錄,並得到每個文件的文件大小。 我嘗試下面的代碼:掃描目錄的文件的大小 - PHP

$downloads = array_slice(scandir("downloads"),2); 
$size = array(); 
foreach($downloads as $value) { 
    $size = filesize("downloads/".$value); 
    echo($size); //at this point the echo works correctly 
} 
echo($size); //shows the filesize of the first file 
echo($size[1]) //nothing happens 
foreach($size as $value) { 
    echo($value); //nothing happens 
    echo($size); //nothing happens 
} 

這就是爲什麼我很安靜困惑與陣列的工作和現在的循環。 將文件名和相應的文件大小保存在一個數組中也不錯。

感謝您的建議。

回答

1

你都在不斷改寫$size變量,這就是爲什麼它是不每個執行foreach進行。因此

您應該創建一個$size陣列和存儲的一切:

$size = array(); 
foreach ($downloads as $file) { 
    $size["downloads/".$file] = filesize("downloads/".$file); 
} 

foreach ($size as $fname => $fsize) { 
    echo "Size of " .$fname. " is " .$fsize. " bytes."; 
} 
2

你做錯了。你在foreach中重寫數組。

foreach($downloads as $value) { 
    $size = filesize("downloads/".$value); 
    // $size is not an array anymore, just an int 
    echo($size); //at this point the echo works correctly 
} 

這應該是正確的:

foreach($downloads as $value) { 
    $size[] = filesize("downloads/".$value); 
} 

全碼:

$downloads = array_slice(scandir("downloads"),2); 
$size = array(); 

foreach($downloads as $value) { 
    $size[] = filesize("downloads/".$value); 
} 

foreach($size as $value) { 
    echo($value).'<br/>'; 
} 
0

當您指定的值:

的foreach($下載爲$值){
$ size = filesize(「downloads /".$ value);
echo($ size); //在這一點回聲正常工作
}

你需要將它添加到「大小」的一個特定的記錄作爲

$size[ $n ] = filesize(...);