Code Fix

PHPエラー 練習問題 102問(全問無料)

コンパイルエラー・実行時エラー・ロジックの誤りを、空欄補充で直す練習問題です。登録不要でその場で解けます。

エラーメッセージで探す

今出ているエラーメッセージをそのまま貼り付けてください。行番号や変数名が違っていても、エラーの種類が一致すれば見つかります。

エラー難易度種別
セミコロン忘れのParse errorの原因と直し方 #1 初級コンパイル
セミコロン忘れのParse errorの原因と直し方 #2 初級コンパイル
セミコロン忘れのParse errorの原因と直し方 #3 初級コンパイル
変数名の $ を書き忘れたときの Parse error #1 初級コンパイル
変数名の $ を書き忘れたときの Parse error #2 初級コンパイル
変数名の $ を書き忘れたときの Parse error #3 初級コンパイル
文字列の閉じクォート忘れによる Parse error #1 初級コンパイル
文字列の閉じクォート忘れによる Parse error #2 初級コンパイル
文字列の閉じクォート忘れによる Parse error #3 初級コンパイル
波括弧 } の閉じ忘れによる Parse error: Unclosed '{' #1 初級コンパイル
波括弧 } の閉じ忘れによる Parse error: Unclosed '{' #2 初級コンパイル
波括弧 } の閉じ忘れによる Parse error: Unclosed '{' #3 初級コンパイル
配列リテラルや関数呼び出しでカンマを付け忘れたときの Parse error #1 初級コンパイル
配列リテラルや関数呼び出しでカンマを付け忘れたときの Parse error #2 初級コンパイル
配列リテラルや関数呼び出しでカンマを付け忘れたときの Parse error #3 初級コンパイル
DivisionByZeroError: Division by zero の原因と直し方 #1 初級実行時
DivisionByZeroError: Division by zero の原因と直し方 #2 初級実行時
DivisionByZeroError: Division by zero の原因と直し方 #3 初級実行時
未定義の関数を呼び出したエラーの原因と直し方 #1 初級実行時
未定義の関数を呼び出したエラーの原因と直し方 #2 初級実行時
未定義の関数を呼び出したエラーの原因と直し方 #3 初級実行時
Call to a member function on null の原因と直し方 #1 初級実行時
Call to a member function on null の原因と直し方 #2 初級実行時
Call to a member function on null の原因と直し方 #3 初級実行時
文字列同士に + を使うと TypeError になる(. との違い) #1 初級実行時
文字列同士に + を使うと TypeError になる(. との違い) #2 初級実行時
文字列同士に + を使うと TypeError になる(. との違い) #3 初級実行時
count()にnullを渡したときのTypeErrorの原因 #1 初級実行時
count()にnullを渡したときのTypeErrorの原因 #2 初級実行時
count()にnullを渡したときのTypeErrorの原因 #3 初級実行時
Warning: Undefined variable が出ても実行が止まらない理由 #1 初級ロジック
Warning: Undefined variable が出ても実行が止まらない理由 #2 初級ロジック
Warning: Undefined variable が出ても実行が止まらない理由 #3 初級ロジック
Warning: Undefined array key の原因と直し方 #1 初級ロジック
Warning: Undefined array key の原因と直し方 #2 初級ロジック
Warning: Undefined array key の原因と直し方 #3 初級ロジック
シングルクォートの文字列では変数が展開されない #1 初級ロジック
シングルクォートの文字列では変数が展開されない #2 初級ロジック
シングルクォートの文字列では変数が展開されない #3 初級ロジック
整数同士の割り算 / が小数になる(整数除算ではない) #1 初級ロジック
整数同士の割り算 / が小数になる(整数除算ではない) #2 初級ロジック
整数同士の割り算 / が小数になる(整数除算ではない) #3 初級ロジック
foreachで&を使った後、unsetを忘れると値が壊れる #1 中級ロジック
foreachで&を使った後、unsetを忘れると値が壊れる #2 中級ロジック
foreachで&を使った後、unsetを忘れると値が壊れる #3 中級ロジック
配列を別の変数に代入するとコピーされる(参照ではない) #1 中級ロジック
配列を別の変数に代入するとコピーされる(参照ではない) #2 中級ロジック
配列を別の変数に代入するとコピーされる(参照ではない) #3 中級ロジック
staticプロパティを self:: なしで参照すると別の変数として扱われる #1 中級ロジック
staticプロパティを self:: なしで参照すると別の変数として扱われる #2 中級ロジック
staticプロパティを self:: なしで参照すると別の変数として扱われる #3 中級ロジック
Cannot access private property の原因と直し方 #1 中級実行時
Cannot access private property の原因と直し方 #2 中級実行時
Cannot access private property の原因と直し方 #3 中級実行時
Cannot instantiate abstract class の原因と直し方 #1 中級実行時
Cannot instantiate abstract class の原因と直し方 #2 中級実行時
Cannot instantiate abstract class の原因と直し方 #3 中級実行時
インターフェースのメソッドを実装し忘れると Fatal error になる #1 中級実行時
インターフェースのメソッドを実装し忘れると Fatal error になる #2 中級実行時
インターフェースのメソッドを実装し忘れると Fatal error になる #3 中級実行時
declare(strict_types=1) で型の異なる引数を渡すと TypeError になる #1 中級実行時
declare(strict_types=1) で型の異なる引数を渡すと TypeError になる #2 中級実行時
declare(strict_types=1) で型の異なる引数を渡すと TypeError になる #3 中級実行時
ArgumentCountError: Too few arguments passed の原因と直し方 #1 中級実行時
ArgumentCountError: Too few arguments passed の原因と直し方 #2 中級実行時
ArgumentCountError: Too few arguments passed の原因と直し方 #3 中級実行時
match式で該当する条件が無いと UnhandledMatchError になる #1 中級実行時
match式で該当する条件が無いと UnhandledMatchError になる #2 中級実行時
match式で該当する条件が無いと UnhandledMatchError になる #3 中級実行時
?? を使わずに存在しないキーへアクセスするとWarningが混ざる #1 中級ロジック
?? を使わずに存在しないキーへアクセスするとWarningが混ざる #2 中級ロジック
?? を使わずに存在しないキーへアクセスするとWarningが混ざる #3 中級ロジック
strpos()が0を返すと if文でfalseと同じに扱われてしまう #1 中級ロジック
strpos()が0を返すと if文でfalseと同じに扱われてしまう #2 中級ロジック
strpos()が0を返すと if文でfalseと同じに扱われてしまう #3 中級ロジック
array_merge()は文字列キーが同じだと上書きし、数値キーは振り直す #1 中級ロジック
array_merge()は文字列キーが同じだと上書きし、数値キーは振り直す #2 中級ロジック
array_merge()は文字列キーが同じだと上書きし、数値キーは振り直す #3 中級ロジック
Cannot modify readonly property の原因と直し方 #1 上級実行時
Cannot modify readonly property の原因と直し方 #2 上級実行時
Cannot modify readonly property の原因と直し方 #3 上級実行時
self:: で作ったインスタンスは継承先のサブクラスにならない(static:: との違い) #1 上級実行時
self:: で作ったインスタンスは継承先のサブクラスにならない(static:: との違い) #2 上級実行時
self:: で作ったインスタンスは継承先のサブクラスにならない(static:: との違い) #3 上級実行時
クロージャの use($var) は値をコピーする(参照ではない) #1 上級ロジック
クロージャの use($var) は値をコピーする(参照ではない) #2 上級ロジック
クロージャの use($var) は値をコピーする(参照ではない) #3 上級ロジック
nullになりうるプロパティへのメソッド呼び出しは ?-> で守る #1 上級実行時
nullになりうるプロパティへのメソッド呼び出しは ?-> で守る #2 上級実行時
nullになりうるプロパティへのメソッド呼び出しは ?-> で守る #3 上級実行時
__toString未実装のオブジェクトを文字列化した原因 #1 上級実行時
__toString未実装のオブジェクトを文字列化した原因 #2 上級実行時
__toString未実装のオブジェクトを文字列化した原因 #3 上級実行時
同じ名前付き引数を2回指定すると Named parameter overwrites エラーになる #1 上級実行時
同じ名前付き引数を2回指定すると Named parameter overwrites エラーになる #2 上級実行時
同じ名前付き引数を2回指定すると Named parameter overwrites エラーになる #3 上級実行時
enumのfrom()に存在しない値を渡すと ValueError になる #1 上級実行時
enumのfrom()に存在しない値を渡すと ValueError になる #2 上級実行時
enumのfrom()に存在しない値を渡すと ValueError になる #3 上級実行時
staticを付け忘れると、インスタンス間でプロパティが共有されない #1 上級実行時
staticを付け忘れると、インスタンス間でプロパティが共有されない #2 上級実行時
staticを付け忘れると、インスタンス間でプロパティが共有されない #3 上級実行時
広告
広告スロット(未設定)

出題モード

まとめて解きたいときはこちら

このモードで始める

選んだモードは次の問題への移動にも適用されます。記録は端末内にのみ保存されます。

エラーの種類について

PHPのエラーは大きく3種類に分かれます。構文エラー(Parse error)はコードを解析する段階で検出されるもので、実行が一切始まりません。実行時エラーは構文としては正しいものの、実行中に投げられる例外(TypeError・DivisionByZeroErrorなど)で、"Fatal error: Uncaught ..." という形式で表示され、その場でプログラムが止まります。ロジックの誤りはプログラムが最後まで実行されるものの結果が期待と違うもので、==の型変換や配列のコピーの挙動が典型です。PHPには実行を止めないWarning(警告)もあり、メッセージが出力に混ざるだけでプログラム自体は最後まで動きます。このサイトではWarningが出るケースもロジックの誤りと同じ扱いにしています。

最も発見が遅れるのはメッセージが一切出ない純粋なロジックの誤りです。このサイトではWarningも含めて出力を確認する練習ができ、コンソール表示が赤ではなく琥珀色になります。

初級から順に解く

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