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