Code Fix

初級

変数名の $ を書き忘れたときの Parse error

PHPの変数は必ず $ から始まります。$を付け忘れると、その識別子は変数ではなく定数名として解釈され、後に続く = の時点で構文エラーになります。

エラーメッセージの読み方

Parse error: syntax error, unexpected token "=" in main.php on line 2
main.php
ファイル名
2
行番号 — PHPが構文解析を諦めた位置
Parse error
エラー種別 — 実行前の構文チェックで検出されました
syntax error, unexpected token "="
内容 — 期待していたもの、または受け付けられなかったもの

このエラーが出る典型パターン

パターン1

 1  <?php
 2   y = 10;
    ^
 3  echo $y;
Parse error: syntax error, unexpected token "=" in main.php on line 2

$の無いyは変数ではなく定数名として読まれます。定数名の直後に=を続けることはできないため、構文エラーになります。

直し方: (空) を $ にします。

この問題を解いてみる →

広告
広告スロット(未設定)

パターン2

 1  <?php
 2   total = 5;
    ^
 3  echo $total;
Parse error: syntax error, unexpected token "=" in main.php on line 2

totalも同様です。$を付け忘れると変数として認識されません。

直し方: (空) を $ にします。

この問題を解いてみる →

パターン3

 1  <?php
 2   score = 0;
    ^
 3  echo $score;
Parse error: syntax error, unexpected token "=" in main.php on line 2

scoreの前にも$が必要です。PHPの変数は必ず$から始まるという規則に例外はありません。

直し方: (空) を $ にします。

この問題を解いてみる →

パターン4

 1  <?php
 2   count = 1;
    ^
 3  echo $count;
Parse error: syntax error, unexpected token "=" in main.php on line 2

$の無いcountは変数ではなく定数名として読まれ、直後の=を続けることができず構文エラーになります。

直し方: (空) を $ にします。

この問題を解いてみる →

パターン5

 1  <?php
 2   flag = true;
    ^
 3  echo $flag;
Parse error: syntax error, unexpected token "=" in main.php on line 2

flagの前にも$が必要です。PHPの変数は必ず$から始まります。

直し方: (空) を $ にします。

この問題を解いてみる →

よくある誤解

「$を忘れても変数名として扱ってくれるはず」という思い込みは誤りです。$の無い識別子は定数の名前として解釈が始まるため、そこに=を続けると構文として成立しません。

実務での勘所

PHPが変数に$記号を必須にしているのは、HTMLに埋め込んで使うという言語の成り立ちに関係しています。$が無いと、ある単語が変数なのか、定数なのか、それともHTMLの一部やただの文字列なのかを、その場だけで判別しにくくなります。$を必ず付けるという規則のおかげで、コードのどこに変数があるかが一目で分かります。この記号(シジル)による区別は、PHPの設計に大きな影響を与えたPerl言語から受け継がれた特徴です。

演習をはじめる

関連するエラー

広告
広告スロット(未設定)