web-dev-qa-db-fra.com

PHP préfixe par un zéro devant un nombre à un chiffre, à la volée

PHP - Existe-t-il une méthode rapide, à la volée, pour tester une chaîne de caractères unique, puis préfixer un zéro non significatif?

Exemple:

$year = 11;
$month = 4;

$stamp = $year.add_single_zero_if_needed($month);  // Imaginary function

echo $stamp; // 1104
190
Ben

Vous pouvez utiliser sprintf: http://php.net/manual/en/function.sprintf.php

<?php
$num = 4;
$num_padded = sprintf("%02d", $num);
echo $num_padded; // returns 04
?>

Il ne fera qu'ajouter le zéro s'il est inférieur au nombre de caractères requis.

Edit: Comme l'a souligné @FelipeAls:

Lorsque vous travaillez avec des nombres, vous devez utiliser %d (plutôt que %s), en particulier lorsqu'il existe un potentiel de nombres négatifs. Si vous n'utilisez que des nombres positifs, l'une ou l'autre option fonctionne correctement.

Par exemple:

sprintf("%04s", 10); renvoie 0010
sprintf("%04s", -10); renvoie 0-10

Tandis que:

sprintf("%04d", 10); renvoie 0010
sprintf("%04d", -10); renvoie -010

437
Kirk Beard

Vous pouvez utiliser str_pad pour ajouter des 0

_str_pad($month, 2, '0', STR_PAD_LEFT); 
_

string str_pad ( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] )

173
Gaurav

L'outil universel de formatage de chaîne, sprintf:

$stamp = sprintf('%s%02s', $year, $month);

http://php.net/manual/en/function.sprintf.php

16
deceze