Code Fix

初級

配列リテラルや関数呼び出しでカンマを付け忘れたときの Parse error

配列の要素や関数の引数を並べる際、区切りのカンマを付け忘れると、次のトークンが「予期しない」ものとして構文エラーになります。

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

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

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

パターン1

 1  <?php
 2  $nums = [1  2, 3];
              ^
 3  echo count($nums);
Parse error: syntax error, unexpected integer "2", expecting "]" in main.php on line 2

配列の要素はカンマで区切ります。スペースで区切っただけでは、PHPは次に閉じ角括弧が来ると期待したまま数値2に出会いエラーになります。

直し方: (空), にします。

この問題を解いてみる →

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

パターン2

 1  <?php
 2  function sum($a, $b, $c) {
 3    return $a + $b + $c;
 4  }
 5  echo sum(1, 2  3);
                 ^
Parse error: syntax error, unexpected integer "3", expecting ")" in main.php on line 5

関数の引数もカンマ区切りが必須です。区切りが無いと閉じ丸括弧を待っている途中で数値3に出会いエラーになります。

直し方: (空), にします。

この問題を解いてみる →

パターン3

 1  <?php
 2  $colors = ["red", "blue"  "green"];
                            ^
 3  echo count($colors);
Parse error: syntax error, unexpected double-quoted string "green", expecting "]" in main.php on line 2

文字列の要素でも同じです。カンマが無いと配列リテラルとして成立しません。

直し方: (空), にします。

この問題を解いてみる →

よくある誤解

スペースで区切って書いても、PHPはそれを要素の区切りとして認識しません。区切りには必ずカンマが必要です。

まとめ

配列リテラルや関数呼び出しでカンマを付け忘れたときの Parse errorは初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

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