2010-12-12 8 views
1

En écrivant un script pour le moment qui nécessite que la mise en page soit formatée en 3 numbers (000) .... Quand je retourne mon SQL, les résultats que je reçois pourraient être '1', pourraient être '100 ', pourrait être' 50 'il pourrait être n'importe où entre 0 et 999 .... Comment puis-je toujours l'obtenir pour revenir en 3 numéros. Par exemple, si le résultat renvoie 1, il faut lire 001, s'il renvoie 50, il doit lire 050 et ainsi de suite.PHP forçant un ensemble de nombres spécifiques

Répondre

8

Il y a la fonction sprintf() pour que:

$formatted_decimal = sprintf('%03d', $unformatted_decimal); 
# 1 -> 001, 10 -> 010, etc... 

Tout comme une pointe générale: Ne pas stocker le mis en forme version, sauf si vous avez des raisons très spécifiques de le faire. Le formatage pour la sortie est bon marché. Stocker les données «brutes» est presque toujours un meilleur choix, au cas où vous changiez vos exigences de format plus tard.

+0

Dang ... C'est exactement ce dont j'ai besoin ... Merci beaucoup! paix – Chris

+0

@Chris, marquez-le comme réponse. – mauris

+0

Oui, juste fait .... je dois attendre 8 minutes jusqu'à ce qu'il me laisse – Chris

0

Vous pouvez utiliser la fonction str_pad

Exemple

str_pad($number, 3, "0", STR_PAD_LEFT); 
+0

Je ne comprends pas pourquoi quelqu'un a voté vers le bas ma réponse, il travaille par exemple, vous pouvez le vérifier ici: http://codepad.org/awXopkIQ – infinity

+0

http://stackoverflow.com/revisions/de791a0d- a696-439f-8f4b-58135d1bea64/view-source – ajreal

+0

mettre à jour à nouveau votre réponse, donc, je vais supprimer cela aussi – ajreal

1

Si vous utilisez MySQL, vous pouvez utiliser la fonction lpad, comme

select lpad(1, 3, 0); 
select lpad(id, 3, 0) as padded_id from ...; 
0

Une autre solution (net nécessairement le meilleur) utilise smallint (3) ZEROFILL non signé dans la base de données. Si vos données "représentent" vraiment ce format, cela pourrait être une solution correcte. Cependant, si vous voulez simplement que votre "présentation" soit dans ce format, ce n'est probablement pas le cas.

represent: what the data means. 
presentation: how it should look to the user. 
Questions connexes