回答編集履歴

1

修正

2019/06/03 01:26

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -1,3 +1,43 @@
1
+ 0はfalseと判定されるのでそのようになっていますね。
2
+
3
+ - [PHPマニュアル:論理型](https://www.php.net/manual/ja/language.types.boolean.php)
4
+
5
+ > boolean に変換する場合、次の値は FALSE とみなされます。
6
+
7
+ boolean の FALSE
8
+
9
+ integer の 0 (ゼロ)
10
+
11
+ float の 0.0 (ゼロ)
12
+
13
+ 空の文字列、 および文字列の "0"
14
+
15
+ 要素の数がゼロである 配列
16
+
17
+ 特別な値 NULL (値がセットされていない変数を含む)
18
+
19
+ 空のタグから作成された SimpleXML オブジェクト
20
+
21
+
22
+
23
+ なので、is_null,empty,issetでは対応できません。個別に`0だったら`を入れるのが確実です。
24
+
25
+ ```php
26
+
27
+ if($v || $v=='0'):
28
+
29
+ $text = $text.",`$k`='$v'";
30
+
31
+ else:
32
+
33
+ $text = $text.",`$k`=NULL";
34
+
35
+ endif;
36
+
37
+ ```
38
+
39
+
40
+
1
41
  他の項目にも0が入ってくる可能性があるのでしたら決め打ちするしかないと思います。
2
42
 
3
43
  ```php
@@ -8,23 +48,7 @@
8
48
 
9
49
  foreach($_POST as $k=>$v):
10
50
 
11
- if(in_array($k,$flags)){
51
+ if($v || in_array($k,$flags)):
12
-
13
- if($v == 0){
14
-
15
- $text = $text.",`$k`=false";
16
-
17
- }else{
18
-
19
- $text = $text.",`$k`=true";
20
-
21
- }
22
-
23
- continue;
24
-
25
- }
26
-
27
- if($v):
28
52
 
29
53
  $text = $text.",`$k`='$v'";
30
54
 
@@ -39,7 +63,3 @@
39
63
 
40
64
 
41
65
  ```
42
-
43
-
44
-
45
- ないのでしたら$v==0のところをelse ifで追加