Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Format liczby zależny od jej rozmiaru
Szunaj85
post
Post #1





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

Ostrzeżenie: (0%)
-----


Poniżej mam skrypt, który wyświetla wszystkie pliki z podanego katalogu wraz z ich rozmiarami. Na końcu natomiast sumuje te rozmiary:
  1. <?php
  2. $directory="folder/";
  3. $dir=opendir($directory);
  4.  
  5. $files_tab = array(); //deklaracja tablicy przechowującej informacje o wszystkich plikach
  6. while($file_name=readdir($dir))
  7. {
  8.  
  9. if(($file_name!=".")&&($file_name!=".."))
  10.     {
  11.     $file_path = $directory.$file_name; //pelna ścieżka do pliku
  12.     $file_tab = array ($file_name, filesize($file_path)); //tablica z informacjami o jednym pliku [0] -> nazwa; [1] -> rozmiar
  13.     array_push($files_tab,  $file_tab); //dołączenie tablicy informacji o jednym pliku do tablicy wszystkich plików
  14.     }
  15. }
  16.  
  17. closedir($dir);
  18.  
  19. $suma = 0;
  20. for ($i=0; $i<count($files_tab); $i++) {
  21.   echo 'nazwa'.$files_tab[$i][0].' '.'rozmiar'.$files_tab[$i][1].'<br/>';
  22.   $suma += $files_tab[$i][1];
  23. }  
  24. echo 'Suma wszystkich plików wynosi '.$suma.'KB';
  25. ?>

Problem polega na tym, że wszystkie rozmiary podawane są w bajtach.
Ja natomiast chcę zrobić taki system, że w zależności czy rozmiar pliku wynosi x bajtów, kilobajtów czy megabajtów liczba nie będzie przekraczać 1024. Natomiast format tej liczby to 2 miejsca po przecinku czyli 1024,00.
Czyli plik który ma rozmiar powyżej jednego bajta wyświetlany był w kilobajtach, a plik który ma rozmiar powyżej jednego kilobajta wyświetlany był w megabajtach.
Np. 140.04 KB, 1.40 MB,
ale nie 1249.08 KB
W pewnym sęsie problem rozwiązałem zamieniając bajty na kilobajty w powyższym kodzie, ale to najprostsze rozwiązanie i nie ma prawie nic wspólnego z tym czego ja chcę dokonać.
  1. <?php
  2. //...
  3. $file_tab = array ($file_name, round( filesize($file_path) / 1024 , 2)); //tablica z informacjami o jednym pliku [0] -> nazwa; [1] -> rozmiar
  4. //...
  5. ?>

No i jeszcze druga część problemu mianowicie każdej wyświetlonej liczbie trzeba przypisać odpowiednią nazwę w echo 'B', 'KB', 'MB', itd
  1. <?php
  2. echo 'Suma wszystkich plików wynosi '.$suma.'KB';
  3. ?>

Ja znalazłem tali skrypt, ale nie mogę coś dać sobie rady z połączeniem tych dwóch skryptów.
  1. <?php
  2. function decodeSize( $bytes )
  3. {
  4.    $types = array( 'B', 'KB', 'MB', 'GB', 'TB' );
  5.    for( $i = 0; $bytes >= 1024 && $i < ( count( $types ) -1 ); $bytes /= 1024, $i++ );
  6.    return( round( $bytes, 2 ) . " " . $types[$i] );
  7. }
  8. ?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 00:42