4

いくつかの整数を含むいくつかの PHP コードがあり、08または0X整数として持っている場合を除いて、すべて正常に動作します。それらを引用すると、すべて正常に機能します。

数字の例:

2      //Works fine
08     //Doesn't work
012    //Doesn't work
"08"   //Works fine again
"012"  //Works fine again

その背後にある理由を誰か教えてもらえますか?

4

1 に答える 1

13

単純に 08 と 09 (引用符なし) やその他の数値を 0 で始めると、PHP は 8 進数を書き込んでいると認識し、08 と 09 は無効な 8 進数です。

http://www.php.net/manual/en/language.types.integer.php

構文

整数は、10 進数 (基数 10)、16 進数 (基数 16)、8 進数 (基数 8)、またはバイナリ (基数 2) 表記で指定でき、オプションで記号 (- または +) を前に付けます。

バイナリ整数リテラルは、PHP 5.4.0 以降で使用できます。

8 進数表記を使用するには、数値の前に0 (ゼロ) を付けます。16 進数表記を使用 するには、数値の前に0xを付けます。バイナリ表記を使用するには、数値の前に0bを付けます。

[...]

警告: PHP 7 より前のバージョンでは、8 進整数 (つまり 8 または 9) に無効な数字が指定された場合、残りの数字は無視されていました。PHP 7 以降、解析エラーが発生します。

于 2013-02-20T13:33:58.257 に答える