PHP | Invalid numeric literal エラーの原因と修正案
PHPでエラー「 Invalid numeric literal」が発生する原因と対処・修正案について紹介しています。
Parse error: Invalid numeric literal in ~
解析エラー: 数値リテラルが無効です
確認環境
エックスサーバー
PHP 8.016
Invalid numeric literal エラーの発生原因
「Invalid numeric literal」というPHPエラーは0から始まる数値を利用した時に、8進リテラルまたは10進リテラルとして扱われてしまう事で発生するエラーです。
このエラーは解析エラー(Parse error)に分類されています。
php5.4から発生するようになった問題で、PHP7.xからは「Invalid numeric literal」エラーとなっているようです。
例えば、「08」以上の数値を扱う際に発生します。
以下のPHPコードを実行した場合「07」は数値として扱われますが、「08」は8進数または10進数の解析でエラーとなってしまいます。
echo 07;
// 7
echo 08;
// Parse error: Invalid numeric literal in ~
変数や配列に入れた時点で「Invalid numeric literal」エラーが発生するので確認は容易ですが、動的に配列に指定している場合は気付きにくいかもしれません。
$arr = [07,08];
// Parse error: Invalid numeric literal in ~
Invalid numeric literal エラーの修正案
「Invalid numeric literal」エラーを修正するには、基本的には0が頭につけて数値を扱わない事ですが、文字列との変換など状況でどうしても生じてしまう場合、(int)などで数値として扱う時に頭の0を除去して利用する事も可能です。
$num = '08';
echo (int)$num + 5;
// 13;
ディスカッション
コメント一覧
まだ、コメントがありません