11

PHP に を含む変数があり、0001それに 1 を追加すると、結果は ではなく 2 になり0002ます。

この問題を解決するにはどうすればよいですか?

4

4 に答える 4

21
$foo = sprintf('%04d', $foo + 1);
于 2009-04-05T02:39:58.660 に答える
12

PHPデータ型と、さまざまな型の変数に対して操作を行うときにそれらがどのように影響を受けるかを理解するのに役立つでしょう。あなたは「PHPの変数は0001と言う」と言いますが、その変数はどのタイプですか?整数はその値を持つことができないため、おそらく文字列「0001」です(1だけです)。したがって、これを行うと:

echo ("0001" + 1);

...+オペレーターは、「うーん、それは文字列と整数です。文字列と整数を追加する方法はわかりません。しかし、文字列をintに変換してから、2つの整数を追加する方法は知っています。 、それで私にそれをさせてください」そしてそれは「0001」を1に変換します。なぜですか?文字列を整数に変換するためのPHPの規則では、文字列の先行ゼロはいくつでも破棄されるとされているためです。これは、文字列「0001」が1になることを意味します。

次に+、「ねえ、1と1を追加する方法を知っています。2です!」と言います。そのステートメントの出力は2です。

于 2009-04-05T04:28:48.573 に答える
9

別のオプションはstr_pad()関数です。

$text = str_pad($text, 4, '0', STR_PAD_LEFT);
于 2009-04-05T02:51:00.147 に答える
3
<?php
#how many chars will be in the string
$fill = 6;
#the number
$number = 56;
#with str_pad function the zeros will be added
echo str_pad($number, $fill, '0', STR_PAD_LEFT);
// The result: 000056
?>
于 2011-04-15T20:06:14.193 に答える