Le formatage d'un nombre de zéros en PHP
J'ai une variable qui contient la valeur 1234567
.
J'aimerais qu'il contient exactement 8 chiffres, c'est à dire 01234567
.
Est-il une fonction PHP pour qui?
Vous devez vous connecter pour publier un commentaire.
Utilisation
sprintf
:Alternativement, vous pouvez également utiliser
str_pad
:sprintf('%+03d:00 UTC',$i)
où$i
est de -12 à 12, permet d'imprimer + ou - en tant que de besoin, et permettra également de mettre les zéros non significatifs pour les nombres inférieurs à 2 chiffres. Idéal pour faire un fuseau horaireSELECT
en HTML.sprintf
(3v4l.org/junvv/perf#output) est un peu plus rapide questr_pad
(3v4l.org/cliNP/perf#output)Étant donné que la valeur est dans $valeur:
S'en faire l'écho:
printf("%08d", $value);
Pour l'obtenir:
$formatted_value = sprintf("%08d", $value);
Cela devrait faire l'affaire
Quand j'ai besoin d'01 au lieu de 1, le suivant a fonctionné pour moi:
Si je ne suis pas vraiment sûr de ce que vous voulez faire, vous êtes probablement à la recherche pour sprintf.
Ce serait:
sprintf
est ce que vous avez besoin.MODIFIER (en quelque sorte demandé par le downvotes), à partir de la page liée ci-dessus, voici un exemple de "zéros entiers":
Réponse Simple
Je ne suis pas sûr de savoir comment interpréter le commentaire en disant: "Il ne sera jamais plus de 8 chiffres" et si c'est en se référant à l'entrée ou de la sortie. Si on se réfère à la sortie que vous auriez à un substr() appel pour le clip de la chaîne.
À clip les 8 premiers chiffres
À clip les 8 derniers chiffres
Si les numéros ont toujours 7 ou 8 chiffres, vous pouvez également utiliser
J'ai couru quelques tests et obtenir que ce serait à double aussi vite que
str_pad
ousprintf
.Si l'entrée peut avoir n'importe quelle longueur, vous pouvez également utiliser
Ce n'est pas aussi rapide que l'autre, mais il devrait aussi être un peu plus vite que
str_pad
etsprintf
.Btw: Mon test a également dit que
sprintf
est un peu plus rapide questr_pad
. J'ai fait tous les tests avec PHP 5.6.$
je viens fixe)J'ai écrit cette fonction simple pour produire ce format: 01:00:03
Secondes sont toujours affichés (même si à zéro).
Les Minutes sont affichées si elle est supérieure à zéro ou si le nombre d'heures ou de jours sont nécessaires.
Les heures sont indiquées si elle est supérieure à zéro ou si les jours sont nécessaires.
Jours sont affichés si elle est supérieure à zéro.
Exemples:
Cela fonctionne parfaitement:
Vous pouvez toujours type d'abus de jonglerie:
Cela ne marchera pas comme prévu si
10 ** pad > INT_MAX
ouvalue >= 10 * pad
.