Quel message d'erreur peut se produire ici ?
Si la donnée dépasse 1024 YB, l'unité de mesure ne sera donc plus le YB mais celle encore au dessus et elle n'est pas présente dans le tableau $size.
Le sprintf est pas super lisible
…et j'ajouterais qu'il aurait pu aller plus loin.
echo sprintf('%.1f', 1) : 1.0
echo sprintf('%.2f', 1) : 1.00
echo sprintf('%.3f', 1) : 1.000
echo sprintf('%s', 'foo') : foo
echo sprintf('%.3f %s', 1, 'foo') : 1.000 foo
return sprintf(
"%.{$decimals}f%s",
$bytes / pow(1024, $factor)),
$size[$factor] ?? null // en PHP 7, sinon : isset($size[$factor]) ? $size[$factor] : null
);
Message édité le 19 juillet 2018 à 09:25:44 par deepblue