1

重複の可能性:
インタビューの質問: PHP では、123==0123 ですか?

私はPHPの初心者です。PHP の学習中に PHP 変数に 0123 を格納しようとしていますが、変数をエコーすると 0123 ではなく 83 が表示されます。誰かがその正確な技術的理由を教えてくれますか?

前もって感謝します、ダヴァル

4

3 に答える 3

5

おそらく、文字列として保存する必要があるときに整数として保存しようとしているからです。

// Incorrect
$var = 0123 // octal number (equivalent to 83 decimal)

// Correct
$var = '0123'
于 2012-06-11T11:44:49.933 に答える
4

あなたはおそらくこのようなことをしています

$var = 0123;

これは文字列ではなく整数です。補足:「0123」は数字ではありませ0ん。しかし、整数で使用される場合、先頭には特別な意味があります。これは、基数 8 の整数として扱われ、基数 10 に変換されます。abs($var)<1$var == 00

               0123_8 = 83_10
1*8^2 + 2*8^1 + 3*8^0 = 8*10^1 + 3*10^0
于 2012-06-11T11:47:04.777 に答える
1

このようにしている場合:

$a = 0123;

次に、8 進数を使用しています0123 = 83

于 2012-06-11T11:46:41.363 に答える