En PHP, comment puis-je ajouter à une chaîne numérique complété par des zéros et préservons le rembourrage zéro?

StackOverflow https://stackoverflow.com/questions/718229

Question

Si j'ai une variable contenant PHP 0001 et ajouter 1 à, le résultat est de 2 au lieu de 0002.

Comment puis-je résoudre ce problème?

Était-ce utile?

La solution

$foo = sprintf('%04d', $foo + 1);

Autres conseils

Il serait sans doute vous aider à comprendre les types de données PHP et comment ils sont affectés lorsque vous faites des opérations à des variables de divers types. Vous dites que vous avez « une variable en PHP dire 0001 », mais quel type est cette variable? Probablement une chaîne, « 0001 », car un nombre entier ne peut pas avoir cette valeur (il est juste 1). Alors, quand vous faites ceci:

echo ("0001" + 1);

... l'opérateur + dit: « Hm, qui est une chaîne et un entier. Je ne sais pas comment ajouter une chaîne et un entier. Mais je ne sais comment convertir une chaîne en un int, puis ajouter deux ints ensemble, alors laissez-moi faire « , puis il convertit « 0001 » à 1. Pourquoi? Étant donné que les règles de PHP pour convertir une chaîne de caractères à un nombre entier disent que tout nombre de zéros en tête de la chaîne sont mis au rebut. Ce qui signifie que la chaîne "0001" devient 1.

Alors le + dit: « Hé, je sais comment ajouter 1 et 1. Il est 2! » et la sortie de cette déclaration est 2.

Une autre option est la str_pad () fonction.

$text = str_pad($text, 4, '0', STR_PAD_LEFT);
<?php
#how many chars will be in the string
$fill = 6;
#the number
$number = 56;
#with str_pad function the zeros will be added
echo str_pad($number, $fill, '0', STR_PAD_LEFT);
// The result: 000056
?>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top