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

回答編集履歴

4

追記

2018/05/14 00:31

投稿

m.ts10806
m.ts10806

スコア80888

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

修正

2018/05/14 00:31

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -37,6 +37,6 @@
37
37
  入力値が0だったり、数字以外の文字列が入ってきた場合も全て「0」として扱われます。
38
38
 
39
39
  つまり、キャストして変換するのではなく、入力値によってその後の処理を行うかどうかの入力値検証をされた方が、コードとしては理想かなと思います。
40
- 今回の場合ですと、```数値ではないもの・数値であっても0のものがあれば入力エラーとする``` 形ですね。
40
+ 今回の場合ですと、```数値ではないもの・数値であっても0あれば入力エラーとする``` 形ですね。
41
41
 
42
42
  ご検討ください。

2

修正

2018/05/14 00:27

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -21,7 +21,7 @@
21
21
  $d = array();
22
22
  echo (int)$d;
23
23
  ```
24
- ※$d つまり配列の場合は値が何か設定されてれば「1」となります
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
- あと定数を定義せずに利用しているので普通はNoticeレベルのエラーが出す。
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

修正

2018/05/14 00:27

投稿

m.ts10806
m.ts10806

スコア80888

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;