重複の可能性:
インタビューの質問: PHP では、123==0123 ですか?
私はPHPの初心者です。PHP の学習中に PHP 変数に 0123 を格納しようとしていますが、変数をエコーすると 0123 ではなく 83 が表示されます。誰かがその正確な技術的理由を教えてくれますか?
前もって感謝します、ダヴァル
重複の可能性:
インタビューの質問: PHP では、123==0123 ですか?
私はPHPの初心者です。PHP の学習中に PHP 変数に 0123 を格納しようとしていますが、変数をエコーすると 0123 ではなく 83 が表示されます。誰かがその正確な技術的理由を教えてくれますか?
前もって感謝します、ダヴァル
おそらく、文字列として保存する必要があるときに整数として保存しようとしているからです。
// Incorrect
$var = 0123 // octal number (equivalent to 83 decimal)
// Correct
$var = '0123'
あなたはおそらくこのようなことをしています
$var = 0123;
これは文字列ではなく整数です。補足:「0123」は数字ではありませ0
ん。しかし、整数で使用される場合、先頭には特別な意味があります。これは、基数 8 の整数として扱われ、基数 10 に変換されます。abs($var)<1
$var == 0
0
0123_8 = 83_10
1*8^2 + 2*8^1 + 3*8^0 = 8*10^1 + 3*10^0