Fonction permettant de retourner un ordre de grandeur pour la taille en octet.
Source / Exemple :
<?php
function unite($octet, $round){
$unite_spec = array('octets','Ko','Mo','Go','To');
$count=0;
$c = count($unite_spec);
while($octet>=1024 && $count<$c-1){
$count++;
$octet/=1024;
}
if($round>=0){
$arr = pow(10,$round);
$number = round($octet*$arr)/$arr;
} else {
$number = $octet;
}
return($number.' '.$unite_spec[$count]);
}
?>
Conclusion :
J'ai déjà trouvé une fonction similaire sur ce site mais "mal" faite.
Celle-ci est drolement simple à comprendre et fonctionne très bien ;)
J'ai maintenant rajouté des options pour empècher le dépassement de capaciter au cas ou il y aurait des fichiers plus gros que 1024 To... Ce qui est physiquement impossible (pour le moment ;)), mais si vous utilisez cette fonction avec l'addition de tous vos fichiers...
Si vous êtes soucieux de la rapidité, vous n'avez qu'à enlever cette option.
J'ai rajouté aussi une fonction pour arrondir le nombre obtenue... Si vous ne voulez pas arrondir, mettez $round < à 0.
1 Ko avec un K majuscule c'est 1024 octets.
1 ko avec un k minuscule c'est 1000 octets.
Au delà, ce ne sont plus des puissance de 2 qui servent de multiplicateurs.
Ainsi 1M "Méga" c'est 1000 kilo et 1G "Giga" c'est 1000 méga de même que actuellement, 1T "Téra" c'est 1000 giga.
Ainsi :
1 To = 1000*1000*1000*1024 octets.
1 Go = 1000*1000*1024 octets.
1 Mo = 1000*1024 octets.
1 Ko = 1024 octets.
Pour info, même si globalement cela n'a que peu d'importance.
J'ai rajouté une fonction d'arrondissement à la virgule... Je l'avais fait il y a longtemps mais je ne l'avais pas mis à jour ici :)
Donc le chiffre que vous entrez est le nombre de chiffre après la virgule que vous voulez ou -1 si vous ne voulez pas d'arrondi.
while(($octet>=1024) && ($count < 4)) {
($count inférieur à 4).
Maudite touche majuscule... :P
Par contre je me permet d'ajouter une petite correction (sans doute un oubli) :
Il faut remplacer la ligne :
while($octet>=1024){
Par :
while(($octet>=1024) && ($count > 4)) {
Sinon on a une erreur d'affichage (variable non définie) et il manque l'unité si on dépasse la dizaine de Tera octects. Bon ça doit pas arriver souvent mais comme cette fonction est générique et peut être utilisée pour autre chose qu'afficher des tailles de fichiers je pense qu'il est bon de corriger (de toute façon autant faire au mieux, non?).
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.