質問: よろしくお願いします。 PHPにてformタグを生成し、input,submitで送ったデータを同ページで反映させたいと思いましたが、うまくいきませんでした。 以下、状況です。 `test.php`ファイル ``` 氏名: ``` *htmlやbody等のタグは割愛しております。 同ページで氏名欄に任意の氏名を記述して送信を押すと、`Undefined index: name`エラーが発生してしまいます。 調べると`test.php`に初回アクセスした際に`($_GET["name"]);`が未定義のため発生するエラーらしく、 対策として ``` if (!empty($_POST["submit"])) {} ``` もしくは ``` if (isset($_POST["submit"])) {} ``` を用いての定義確認をする という旨の記事がありましたが、そもそも本文中において`$_GET["name"]`の定義とは何を指しているのでしょう。 `form`から送られた情報のタグ内には`name="name"`にて定義済み`GET`変数で`"name"`を取得できるのかと思いましたが、 別途定義の必要性があるのでしょうか。 恐縮ですが、アドバイスいただけますと幸いです。
回答: 注意していただきたいのはエラーの内容としては未定義の変数ではなくて、 未定義の配列indexを参照しているということです。 自作の配列の変数の存在しないキーにアクセスしようとすると、同様のエラーになります。試してみてください。 通常は自作の配列の変数であればindexを宣言すれば済むのですが 、 `$_GET`はPHPで定義されるグローバルスコープな配列の変数のため宣言することができず、質問中のように存在するかチェックしてから使う必要があります。 > > そもそも本文中において$_GET["name"]の定義とは何を指しているのでしょう > > > ということで ここは`$_GET`の配列のキーの定義を指しています。