PHP-単一の文字列をテストし、先行ゼロを付加するための迅速なオンザフライの方法はありますか?
例:
$year = 11;
$month = 4;
$stamp = $year.add_single_zero_if_needed($month); // Imaginary function
echo $stamp; // 1104
sprintf を使用できます: http://php.net/manual/en/function.sprintf.php
<?php
$num = 4;
$num_padded = sprintf("%02d", $num);
echo $num_padded; // returns 04
?>
必要な文字数に満たない場合にのみゼロが追加されます。
編集:@ FelipeAlsが指摘したように:
数値を扱う場合は、%d
( ではなく%s
) を使用する必要があります。特に、負の数値の可能性がある場合は注意が必要です。正の数のみを使用している場合は、どちらのオプションでも問題なく機能します。
例えば:
sprintf("%04s", 10);
0010 を
sprintf("%04s", -10);
返す 0 ~ 10 を返す
一方:
sprintf("%04d", 10);
0010
sprintf("%04d", -10);
を返します -010 を返します
str_pad
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 ]] )
文字列フォーマット用の汎用ツールsprintf
:
$stamp = sprintf('%s%02s', $year, $month);