teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

最初にしていた回答の再記載と、どのように違う結果になるかの詳細を書き加えました。

2019/05/14 11:25

投稿

Eggpan
Eggpan

スコア3290

answer CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  `$_POST['hoge']`などに何かしら値がある場合、を判定するのであれば、下記で良いと思います。
4
4
 
5
- ※ `$_POST['hoge']`に空文字列`''`が入った場合はfalse判定になってしまうので、issetではなく! emptyを使うよう修正しました。
6
-
7
5
  ```PHP
8
6
  if(! empty($_POST['hoge']) or ! empty($_POST['piyo'])) {
9
7
  updated_spamham_info($_POST['id'], $_POST['hoge'], $_POST['piyo']);
@@ -19,4 +17,17 @@
19
17
  if($hoge or $piyo){
20
18
  updated_spamham_info($_POST['id'], $hoge, $piyo);
21
19
  }
22
- ```
20
+ ```
21
+
22
+ ### 追記
23
+ 最初に回答した際、下記の様に記載しておりました。
24
+ ```PHP
25
+ if(isset($_POST['hoge']) or isset($_POST['piyo'])) {
26
+ updated_spamham_info($_POST['id'], $_POST['hoge'], $_POST['piyo']);
27
+ }
28
+ ```
29
+
30
+ これはこれで同じような動作になるのですが、
31
+ `$_POST['hoge']` と `$_POST['piyo']` 両方に空文字列(`''`) が入った場合、
32
+ trueと判定され、結果として**関数が実行されます。** (isset関数はnull以外はtrueを返すため)
33
+ これは元のロジックと異なる動作となるので、`! empty` を利用した書き方に修正させていただきました。

1

判定方法の1つ目に、元のコードと条件が変わってしまう部分があったのでisset -> ! emptyに修正しました。

2019/05/14 11:25

投稿

Eggpan
Eggpan

スコア3290

answer CHANGED
@@ -1,9 +1,11 @@
1
1
  変数が存在しない場合の警告を回避出来るのは [empty()](https://www.php.net/manual/ja/function.empty.php) [isset()](https://php.net/manual/ja/function.isset.php) といったものがあります。
2
2
 
3
- `$_POST['hoge']`などにnullが入ないのであれば、下記で良いと思います。
3
+ `$_POST['hoge']`などに何かし値がある場合、を判定するのであれば、下記で良いと思います。
4
4
 
5
+ ※ `$_POST['hoge']`に空文字列`''`が入った場合はfalse判定になってしまうので、issetではなく! emptyを使うよう修正しました。
6
+
5
7
  ```PHP
6
- if(isset($_POST['hoge']) or isset($_POST['piyo'])) {
8
+ if(! empty($_POST['hoge']) or ! empty($_POST['piyo'])) {
7
9
  updated_spamham_info($_POST['id'], $_POST['hoge'], $_POST['piyo']);
8
10
  }
9
11
  ```