CONVERSION ET TEXTE DES TAILLE DE DONNÉES À PARTIRE D'UNE TAILLE EN OCTETS

Signaler
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
Arto_8000
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51271-conversion-et-texte-des-taille-de-donnees-a-partire-d-une-taille-en-octets

Arto_8000
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
6
Un snippet c'est très souvent juste un implémentation d'un algorithme pour montrer comment on peut l'implémenter dans un langage en particulier. Normalement, ils doivent être posté sur ce site : http://www.codyx.org/.
Utilisateur anonyme
ca fait des années que je developpe... et je n'ai jamais entendu parler de Snippet ? C'est quoi ce truc ?

Quant au Kio, ou Ko, effectivement la norme étant toute récente (une dizaine d'années) je savais pas !
Moi je me refere juste à ce qu'affichais mon mac dans les années 90 sur la taille des fichiers...

Merci poour l'info
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
Salut,

Quatre petites choses :
1/ Ce n'est pas une source. C'est un snippet. Sa place n'est donc pas ici, mais sur codyx.

2/ Histoire d'alléger les tests...
if ($a < 10) {
// blabla
}
elseif ($a < 20) {
// blabla
}
Si le premier test n'est pas vérifié, alors lors du second, on sait que $a est OBLIGATOIREMENT supérieur ou égal à 10. Inutile donc de faire deux tests dans les elseif.

3/ Les unités utilisés ne sont pas valides. Il faudrait utiliser Kio, Mio, Gio, Tio, etc.
Les unités Ko, Mo, Go, To, etc sont valables pour des puissances de 10. Toi, tu utilises des puissances de 2.
Cf : http://fr.wikipedia.org/wiki/M%C3%A9bioctet

4/ Sinon, je te propose une variante plus claire, plus courte et plus flexible (possibilité de choisir le nombre de décimales) :

function convert_octets($size, $precision = 0) {
static $units = array('o', 'Kio', 'Mio', 'Gio', 'Tio', 'Pio','Eio','Zio','Yio');
$pow = 0;
while ($size >= 1024) {
$size /= 1024;
$pow++;
}
return round($size, $precision) . $units[$pow];
}

Pour afficher la taille d'un fichier : echo convert_octets(filesize($file), 2);
Mais ça aussi c'est un snippet ;)