いくつかの整数を含むいくつかの PHP コードがあり、08
または0X
整数として持っている場合を除いて、すべて正常に動作します。それらを引用すると、すべて正常に機能します。
数字の例:
2 //Works fine
08 //Doesn't work
012 //Doesn't work
"08" //Works fine again
"012" //Works fine again
その背後にある理由を誰か教えてもらえますか?
単純に 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 以降、解析エラーが発生します。