初級のPHPエラー 42問
14種類のエラーを、それぞれ複数パターンずつ収録しています。
- セミコロン忘れのParse errorの原因と直し方文の末尾にセミコロンを付け忘れたときに出る構文エラーです。PHPは次の行のトークンを見てから、初めて構文が崩れていることに気づきます。
- 変数名の $ を書き忘れたときの Parse errorPHPの変数は必ず $ から始まります。$を付け忘れると、その識別子は変数ではなく定数名として解釈され、後に続く = の時点で構文エラーになります。
- 文字列の閉じクォート忘れによる Parse error文字列を囲むクォートの片方を書き忘れると、それ以降のコードすべてが文字列の中身として読み込まれ、ファイルの終わりまで閉じクォートが見つからずエラーになります。
- 波括弧 } の閉じ忘れによる Parse error: Unclosed '{'関数やif文の波括弧を閉じ忘れると、PHPはファイルの終わりに達してから、どの行の { が対応を失っているかを教えてくれます。
- 配列リテラルや関数呼び出しでカンマを付け忘れたときの Parse error配列の要素や関数の引数を並べる際、区切りのカンマを付け忘れると、次のトークンが「予期しない」ものとして構文エラーになります。
- DivisionByZeroError: Division by zero の原因と直し方0で割り算をすると、PHP8ではDivisionByZeroErrorという例外が投げられ、プログラムが止まります。PHP7以前はWarningを出して結果はINFになるだけでしたが、8では致命的エラーに格上げされています。
- 未定義の関数を呼び出したエラーの原因と直し方存在しない名前の関数を呼び出したときに出るエラーです。関数名のタイプミスのほか、必要なファイルをrequireし忘れているときにも起こります。
- Call to a member function on null の原因と直し方nullが入った変数に対してメソッドを呼び出そうとしたときに出るエラーです。オブジェクトを取得し損ねた変数をそのまま使うと、必ずここで止まります。
- 文字列同士に + を使うと TypeError になる(. との違い)PHPの文字列連結演算子は . (ピリオド)です。+は数値の加算専用で、数値として解釈できない文字列に対して使うとTypeErrorになります。
- count()にnullを渡したときのTypeErrorの原因count()にnullを渡すと、PHP8ではTypeErrorが投げられます。関数が値を返し忘れてnullになった変数をそのままcount()に渡すと、ここで止まります。
- Warning: Undefined variable が出ても実行が止まらない理由宣言していない変数を参照するとWarningが出ますが、PHPはこれをエラーとして扱わず実行を続けます。参照した箇所の値はnullとして扱われます。
- Warning: Undefined array key の原因と直し方配列に存在しない添字でアクセスするとWarningが出ますが、プログラムは停止せず、その値はnullとして扱われます。
- シングルクォートの文字列では変数が展開されないダブルクォートの文字列内では$variableがその値に置き換わりますが、シングルクォートの文字列内では一切展開されず、そのままの文字として出力されます。
- 整数同士の割り算 / が小数になる(整数除算ではない)PHPの / 演算子は割り切れるかどうかに関わらず、割り切れない場合は自動的に小数(float)を返します。整数の商だけが欲しい場合はintdiv()を使う必要があります。