回答編集履歴

1 修正

m.ts10806

m.ts10806 score 67649

2020/05/02 22:07  投稿

> 出る理由が知りたい
Undefined variableは「未定義の変数」
プログラミングは定義したものしか参照できません。
プログラミングは定義したものしか参照できません。(言語によっては自動的に定義される情報もあります)
出席簿に「山本さん」がいなければそのクラスで「山本さん」を呼んでも返事がないですからね(例えはあまり良くないが)
参照予定の[変数の型](https://www.php.net/manual/ja/language.types.php)にあわせて初期化するのが最もベターな対応方法です。
参照予定の[変数の型](https://www.php.net/manual/ja/language.types.php)にあわせて初期化するのが最もベターな対応方法です。
Undefined indexは「未定義のインデックス」
下記が再現例です
```php
<?php
$arr = ["a"=>"aa"];
echo $arr["a"];
echo $arr["b"];
```
bは定義されてないので参照できません。
ただこれは「初期値を定義したらいい」とはならないケースも多いです。
既に書いてある通りですが、今回はブラウザから単にアクセスしたときはGETで処理されるのでPOSTが定義されてないケースです。
$_POSTはそもそも[スーパーグローバル変数](https://www.php.net/manual/ja/language.variables.superglobals.php)で、自動的に定義されるものであるため、初期値を定義するものではありません。
[現在のリクエストがGETかPOSTかを判定する](https://www.javadrive.jp/php/sample/keijiban/index3.html)とか、[filter_input()](https://www.php.net/manual/ja/function.filter-input.php)でチェックするなどの対策が有効です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る