1

これは奇妙な質問のように思えるかもしれませんが、私自身では解決できなかった問題です。変数 $add に 001 などの数値を割り当てて、次のような操作を実行したいとします。

$me = $add + 1;

操作後、この数値の「役に立たない」先頭の 0 を保持するにはどうすればよいですか?

完全な概要:

<?php
$add = 001;
$me = $add + 1;
?>

目的の出力は 002 ですが、受信した出力は単純に 2 です。また、これを逆方向に実行できるようにしたいと考えています。たとえば、002 からマイナス 1 を実行すると、単純に 1 ではなく 001 が生成されます。

4

3 に答える 3

2

うっかり10 進数表記と8 進数表記を混同しています。

$a = 0123; // octal number (equivalent to 83 decimal)

したがって、010 から 001 を引いても 009 にはなりません。(例については、この計算機を参照してください)

先頭にゼロを付けて数値を表示したい場合は、出力の書式設定の問題です。詳細については、この SO の回答を参照してください。

于 2012-07-23T09:58:04.437 に答える
0

数字を常に 3 桁にしたい場合は、sprintf を使用できます。

 sprintf('%03d', 2);  # prints "002"

桁数が可変で、元の入力に依存する場合は、最初に必要な桁数を決定してから、それを format パラメータに入れる必要があります。

また、開始値を取得するときは、誤って 8 進数で取得しないように注意してください (入力文字列を解析するときに実際に発生するべきではありません。これらは 10 進数として扱われますが、プログラム内のリテラルには注意してください)。

于 2012-07-23T10:06:07.517 に答える
0

あなたは次のようにstr_padしたい:

<?php

$add = 001; //starting number

$number_to_pad = $add + 1; // echoing this would write "2"

$desired_length = 3; // adjust accordingly to how long you want you number to be

$output = str_pad($number_to_pad, $desired_length, '0', STR_PAD_LEFT);

// echo $add; // would write out '1'
// echo $number_to_pad; // would write out '2'
echo $output; // writes '002' as desired    
?>
于 2012-07-23T10:07:22.830 に答える