フリーランス|WEB 制作経験丸7年、制作会社様からのご依頼に丁寧・高クオリティでお手伝いいたします。 IRODORI DESIGN

B L O G

【PHPエラー】Parse error: Invalid numeric literal in…の原因と解決方法

Parse error: Invalid numeric literal in...
PHP
バグ解決
プログラムエラー
解決方法

PHPはWebサイトを構築する際に使用されるプログラミング言語です。
PHPでは何かしら不具合があると処理を止めて英語でエラー文章を表示します。
プログラマはブラウザに表示されているエラーメッセージを手掛かりに原因となるプログラムエラーを修正します。
この記事ではそんなPHPのプログラムエラーの中でも時々見かけるParse error: Invalid numeric literal in...の原因と解決方法をご紹介したいと思います。

Parse error: Invalid numeric literal in…が発生する原因

まずは実際にParse error: Invalid numeric literal in...がどんなふうにエラーメッセージが表示されるか見てみましょう。

PHPのコードを以下のように書くとこのエラーが表示されます。

echo 08;

めちゃくちゃシンプルな記述、エラーがあるようには思えませんが。。。

Parse error: Invalid numeric literal in ●●● on line ■■■

このようにエラーメッセージが表示されます。

  • ●●●:原因となるファイルがあるサーバーパス
  • ■■■:その記述がある行数

そして、このParse error: Invalid numeric literal in...は8以上の数値を扱う際に発生する可能性があります。

7までは「07」のように頭に0を付けても数値として認識されますが、8以上の場合は「08」とするとプログラムエラーとなってしまうようです。

つまりこのエラーメッセージからは「●●●の■■■行目に数値の頭に0をつけている個所がある」ということがわかります。

Parse error: Invalid numeric literal in…の解決方法

ここからはParse error: Invalid numeric literal in...の解決方法をご紹介します。

数値の頭に0を付けない

このプログラムエラーは数値の頭に0を付けることで発生します。
そのため数値の頭に0を付けなければ発生することはありません。

// echo 08;
echo 8;

癖で数値の頭に0を付けてしまう人は不用意なプログラムエラーを未然に防ぐためにも数値の頭に0を付けるのは避けましょう。

頭の0を削除する

何かしらの値を変換した際やユーザーに値を入力してもらう際など、予期せず数値の頭に0が付いてしまうことも想定されます。

そのような場合は最初は文字列として扱い、途中で数値として変換して扱うことで自動で先頭の0が削除され、正しく数値として扱われるようになります。

$num = '08';
echo (int)$num + 10;

まとめ

いかがでしたか?
Parse error: Invalid numeric literal in...は数値の扱い方を気を付けることで防ぐことが出来ます。
予期せぬプログラムエラーを起こさないためにも数値の扱い方には注意していきたいですね。