回答編集履歴
4
追記
answer
CHANGED
@@ -29,7 +29,7 @@
|
|
29
29
|
キャストしているからというのもあります。
|
30
30
|
|
31
31
|
値が定義されていない変数の値はnullなので上記の検証コード上では「0」となります。
|
32
|
-
0のまま扱われるので
|
32
|
+
0のまま扱われるので今回の現象が起きています。
|
33
33
|
|
34
34
|
あと定数を定義せずに利用しているのでNoticeレベルのエラーが出ているはずです。
|
35
35
|
はじめの内(または開発途中段階)は[エラー表示はOnに](https://qiita.com/shotets/items/3c95aef631b2c5eadae5)しておきましょう。
|
3
修正
answer
CHANGED
@@ -37,6 +37,6 @@
|
|
37
37
|
入力値が0だったり、数字以外の文字列が入ってきた場合も全て「0」として扱われます。
|
38
38
|
|
39
39
|
つまり、キャストして変換するのではなく、入力値によってその後の処理を行うかどうかの入力値検証をされた方が、コードとしては理想かなと思います。
|
40
|
-
今回の場合ですと、```数値ではないもの・数値であっても0
|
40
|
+
今回の場合ですと、```数値ではないもの・数値であっても0であれば入力エラーとする``` 形ですね。
|
41
41
|
|
42
42
|
ご検討ください。
|
2
修正
answer
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
$d = array();
|
22
22
|
echo (int)$d;
|
23
23
|
```
|
24
|
-
※$d つまり配列の場合は
|
24
|
+
※$d つまり配列の場合は何か値が設定されていれば「1」となります
|
25
25
|
|
26
26
|
luckerさんの回答と私のコメントでも指摘しているように、
|
27
27
|
引数で変数を渡していないことは問題として1つあるのですが、
|
@@ -31,8 +31,8 @@
|
|
31
31
|
値が定義されていない変数の値はnullなので上記の検証コード上では「0」となります。
|
32
32
|
0のまま扱われるので
|
33
33
|
|
34
|
-
あと定数を定義せずに利用しているので
|
34
|
+
あと定数を定義せずに利用しているのでNoticeレベルのエラーが出ているはずです。
|
35
|
-
はじめの内は[エラー表示はOnに](https://qiita.com/shotets/items/3c95aef631b2c5eadae5)しておきましょう。
|
35
|
+
はじめの内(または開発途中段階)は[エラー表示はOnに](https://qiita.com/shotets/items/3c95aef631b2c5eadae5)しておきましょう。
|
36
36
|
|
37
37
|
入力値が0だったり、数字以外の文字列が入ってきた場合も全て「0」として扱われます。
|
38
38
|
|
1
修正
answer
CHANGED
@@ -8,9 +8,9 @@
|
|
8
8
|
}
|
9
9
|
```
|
10
10
|
|
11
|
-
なぜキャストが問題かというと「
|
11
|
+
なぜキャストが問題かというと「どんな情報も数値として扱わせてしまう」からです。
|
12
12
|
|
13
|
-
下記は全て出力結果は「0」となります。
|
13
|
+
例として、下記は全て出力結果は「0」となります。
|
14
14
|
```php
|
15
15
|
$a = "a";
|
16
16
|
echo (int)$a;
|