PHPを独学するなら、Udemyの動画講座で
PHP 7も使えて快適な エックスサーバー

 定義していない変数の値をechoなどで表示しようとすると表示されるエラーメッセージです。たとえば、スクリプトの先頭で「echo $a;」と記述すると表示されます。スクリプトの動作が止まってしまうほど重大なエラーではないので、とりあえず非表示にしたいときは、.htaccessに次のように記述するのが最も簡単です。

○すべてのエラーメッセージを非表示にする(.htaccessに記述)
php_value error_reporting 0

 これにより、.htaccessを配置したディレクトリ(サブディレクトリ含む)以下のPHPスクリプトでNoticeエラーが表示されなくなります。Noticeエラーのみを非表示にしたい場合は、次の記事を参考にしてください。

【関連記事】Noticeエラーだけを非表示にしたいとき

.htaccessがよくわからないときは、次の記事も参考にしてください。

【関連記事】データが丸見えになっていませんか?

 個別のスクリプトだけ対処したい場合は、PHPスクリプトの先頭に「error_reporting(0);」と記述すれば、そのファイルからのエラーメッセージは非表示になります。

<?php
error_reporting(0);
…略…

 エラーメッセージを非表示にするのは「とりあえずの対策」で、抜本的な対策ではないので、注意してください。エラーメッセージを非表示にするだけでなく、処理コードを修正するには、変数をいきなり出力しないで、何らかの値を与えておきます(初期化する)。

<?php
// 変数を初期化してから出力する
$a = "";  // この行を追加 → 変数値を出力する前に値を与える
echo $a;
?>

 この例は少し簡単すぎましたが、このエラーメッセージが表示される典型的なケースはif文です。たとえば、次の例では、20時以降は「こんばんは」と表示しています。

<?php
// 20時以降は「こんばんは」
if (date("H") >= 20) {
    $a = "こんばんは";
}
echo $a;
?>

 問題はなさそうですが、20時より前は$aに値が設定されないため、「echo $a;」の部分でエラーメッセージが表示されます。
 この「Notice: Undefined variable:」が表示される場合は、if文などの関係で、ある変数に値が設定されないタイミングがないかどうか調べる必要があります。上の例では、elseを追加して$aに値を設定しておけば問題は起きません。

<?php
// 「Notice: Undefined variable:」の問題を解決
// 20時以降は「こんばんは」
if (date("H") >= 20) {
    $a = "こんばんは";
} else { // 20時より前は「こんにちは」
    $a = "こんにちは";
}
echo $a;
?>

 「Notice: Undefined variable:」大量に表示されて困ったときはひとまず、エラーメッセージを非表示にする方法があります。詳しくは、急に大量のエラーメッセージが表示されたときを参照してください。

定番のエラーメッセージを予習したい方におすすめの本

PHPに入門したばかりの方はエラーメッセージが表示されると混乱するかもしれませんが、入門時に出会うメッセージのパターンは決まっています。先にエラーメッセージのパターンを予習しておきたい方にはこの本をおすすめします(私が書いた本ですが)。よくある定番のエラーや入力間違いなどをクイズ風にまとめてあります。暇なときに読んでみてください。
「PHP「直す力」養成ドリル」について詳しくはこちら

スポンサーリンク

こちらもどうぞ

こちらも参考にしてください

関連記事

MySQL

phpMyAdmin

PHPサンプルコード

PHP全般

PHP関数

WordPress

PHPの基礎が身に付いたかチェック!

PHP「直す力」養成ドリル
スポンサーリンク