PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Auslesen eines Ordners und Abrunden der MB Zahl



damuxu
05.01.2006, 21:03
Hi,
ich hab mal hier nu ja ein Script, womit ich auslesen kann, wie viele Dateien im Ordner sind und wie viel Speicher (in MB) diese brauchen.
nur sieht die Speichergröße etwas unübersichtlich aus. Ich wollte, dass es auf 3 Stellen nach dem Komma abgerundet wird wie z.B. aus 0.0556964874268 MB wird zu 0.056 MB

Hier ist mein derzeitiger Script:


<?php
if ($handle = opendir('.')) {
$count = 0;
$size = 0;
while (false !== ($file = readdir($handle))) {
if (is_file($file)) {
$count++;
$size += filesize($file) /1024 ;
}
}
closedir($handle);
echo ' Es werden derzeit ' . $count . ' Bilder gehostet';
} else {
echo 'Fehler: Kann Verzeichnis nicht lesen';
}



?>
<br>
mit einer Gesamtgröße von

<br>

<?php
if ($handle = opendir('.')) {
$count = 0;
$size = 0;
while (false !== ($file = readdir($handle))) {
if (is_file($file)) {
$count++;
$size += filesize($file) /1024 /1024;
}
}
closedir($handle);
echo ' ' . $size . ' MB';
} else {
echo 'Fehler: Kann Verzeichnis nicht lesen';
}
?>

Wolfgang
05.01.2006, 21:20
Hallo
Also vorweg, ich kenne mich mit php nur rudimentär aus, da ich perl nutze.
Aber die unter perl und auch c++ bekannte Funktion
printf "FORMAT", STRING
sollte es IMHO auch unter php geben.
Also in deinem Fall
printf("%09.3f",$size);
Wenn das nix bringt, schau dir mal
number_format()
an.
Unter perl und c++ geht das immer, aber so ich mich recht erinnere, ist da bei php ein Type double nötig.

Gruß Wolfgang

patlkli
20.01.2006, 17:59
Hallo damuxu!

Dein Code muss nur um eine Zeile erweitert werden.

Einfach folgenden benutzen:


<?php
if ($handle = opendir('.')) {
$count = 0;
$size = 0;
while (false !== ($file = readdir($handle))) {
if (is_file($file)) {
$count++;
$size += filesize($file) /1024 ;
}
}
closedir($handle);
echo ' Es werden derzeit ' . $count . ' Bilder gehostet';
} else {
echo 'Fehler: Kann Verzeichnis nicht lesen';
}



?>
<br>
mit einer Gesamtgröße von

<br>

<?php
if ($handle = opendir('.')) {
$count = 0;
$size = 0;
while (false !== ($file = readdir($handle))) {
if (is_file($file)) {
$count++;
$size += filesize($file) /1024 /1024;
$roundsize = round($size, 3);
}
}
closedir($handle);
echo ' ' . $roundsize . ' MB';
} else {
echo 'Fehler: Kann Verzeichnis nicht lesen';
}
?>

"echo" verändert, da PHP ja die andere Variable ausgeben soll.
Die Funktion round( ) ..... naja ..... rundet halt Zahlen.
Anwendung: round ([zu_rundende_zahl], [anzahl_der_dezimalen]);

Dabei ist die Angabe der Dezimalen nach zwingend. Wenn keine Angabe gemacht wird, wird auf 0 Nachkommastellen d.h. ganze Zahlen gerundet.

Siehe auch noch:
SELFPHP (http://www.selfphp.de/funktionsreferenz/mathematische_funktionen/round.php)
PHP.net-Manual (http://www.php.net/manual/de/function.round.php)