236

PHP-単一の文字列をテストし、先行ゼロを付加するための迅速なオンザフライの方法はありますか?

例:

$year = 11;
$month = 4;

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

echo $stamp; // 1104
4

3 に答える 3

557

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 を返します

于 2011-04-14T05:50:35.747 に答える
211

str_pad0を追加するために使用できます

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 ]] )

于 2011-04-14T05:46:41.717 に答える
17

文字列フォーマット用の汎用ツールsprintf:

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

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

于 2011-04-14T05:50:40.447 に答える