web-dev-qa-db-ja.com

PHPで00のプレフィックスを持つ数字をフォーマットするにはどうすればよいですか?

請求書番号を生成しようとしています。これらは常に、先頭にゼロを付けた4桁の長さである必要があります。例:

  • 1->請求書0001
  • 10->請求書0010
  • 150->請求書0150

等.

32
mike23

str_pad() を使用します。

$invID = str_pad($invID, 4, '0', STR_PAD_LEFT);

72
Wiseguy

sprintfを使用: http://php.net/function.sprintf

$number = 51;
$number = sprintf('%04d',$number);
print $number;
// outputs 0051


$number = 8051;
$number = sprintf('%04d',$number);
print $number;
// outputs 8051
23
Chris Baker

(s)を使用 printf

printf('%04d',$number);
11
Wrikken

これを試して:

$x = 1;
sprintf("%03d",$x);
echo $x;
2
Dave

常に何かを印刷している場合、printf()は正常に機能しますが、sprintf()はより柔軟性があります。この関数を使用する場合、$threshold4になります。

/**
 * Add leading zeros to a number, if necessary
 *
 * @var int $value The number to add leading zeros
 * @var int $threshold Threshold for adding leading zeros (number of digits 
 *                     that will prevent the adding of additional zeros)
 * @return string
 */
function add_leading_zero($value, $threshold = 2) {
    return sprintf('%0' . $threshold . 's', $value);
}

add_leading_zero(1);      // 01
add_leading_zero(5);      // 05
add_leading_zero(100);    // 100
add_leading_zero(1);      // 001
add_leading_zero(5, 3);   // 005
add_leading_zero(100, 3); // 100
add_leading_zero(1, 7);   // 0000001
2
webjawns.com
while ( strlen($invoice_number) < 4 ) $invoice_num = '0' . $invoice_num;
0
user769573

str_pad関数を使用します

 //pad to left side of the input
$my_val=str_pad($num, 3, '0', STR_PAD_LEFT)

//pad to right side of the input
$my_val=str_pad($num, 3, '0', STR_PAD_RIGHT)

//pad to both side of the input
$my_val=str_pad($num, 3, '0', STR_PAD_BOTH)

$ numはあなたの番号です

0
Sani Kamal