配列リテラルや関数呼び出しでカンマを付け忘れたときの 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パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。