Warning: Undefined variable が出ても実行が止まらない理由
宣言していない変数を参照するとWarningが出ますが、PHPはこれをエラーとして扱わず実行を続けます。参照した箇所の値はnullとして扱われます。
なぜエラーが出ないのか
Warning: Undefined variable $userName in main.php on line 2
main.php- ファイル名
2- 行番号
Warning- 種別 — 実行は止まりません。メッセージが出力に混ざるだけです
Undefined variable $userName- 内容 — 何が起きたか
このエラーが出る典型パターン
パターン1
1 <?php 2 echo $userName; ^
Warning: Undefined variable $userName in main.php on line 2出力に混ざるだけで実行は止まりません(期待: Al)
$userNameは一度も定義されていません。PHPはWarningを出すだけで実行を続け、その値はnullとして扱われます。
直し方: $userName を "Al" にします。
広告
広告スロット(未設定)
パターン2
1 <?php 2 function greet() { 3 echo $message; ^ 4 } 5 greet();
Warning: Undefined variable $message in main.php on line 3出力に混ざるだけで実行は止まりません(期待: Hello)
関数の中でも定義していない変数を参照すればWarningになります。実行は止まらず処理が先に進む点に注意してください。
直し方: $message を "Hello" にします。
パターン3
1 <?php 2 $total = 0; 3 $total = $total + $price; ^ 4 echo $total;
Warning: Undefined variable $price in main.php on line 3出力に混ざるだけで実行は止まりません(期待: 50)
$priceは定義されていないため、足し算にnull(0扱い)が紛れ込みます。Warningが出ても処理は続行され、結果だけが静かにおかしくなります。
直し方: $price を 50 にします。
よくある誤解
「Warningが出たらプログラムはそこで止まっているはず」という思い込みは誤りです。PHPのWarningは出力に混ざるだけで、処理はそのまま先に進みます。気づかずに実行し続けてしまう危険があります。
まとめ
Warning: Undefined variable が出ても実行が止まらない理由は初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。