回答編集履歴

3

edit

2021/03/07 09:32

投稿

m.ts10806
m.ts10806

スコア80875

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  一応[count()](https://www.php.net/manual/ja/function.count.php)でのチェックも入れておけば
30
30
 
31
- 想定の形でないと担保もできなくないです。
31
+ 想定の形と担保もできなくないです。
32
32
 
33
33
 
34
34
 

2

edit

2021/03/07 09:32

投稿

m.ts10806
m.ts10806

スコア80875

test CHANGED
@@ -1,4 +1,34 @@
1
- # 途中で送信してしまったので編集中
1
+ > で送信→offsetエラー
2
+
3
+
4
+
5
+ listに割り当てるだけのデータができません。
6
+
7
+ ```php
8
+
9
+ <?php
10
+
11
+ list($Y, $m, $d) = explode('-', "");
12
+
13
+ ```
14
+
15
+ [list()](https://www.php.net/manual/ja/function.list.php)
16
+
17
+
18
+
19
+ nullでないこと、空でないこと など事前のチェックが必要。
20
+
21
+ 省略できない引数がある機能を使うときは絶対に必要。
22
+
23
+
24
+
25
+ むしろ、前提が必要なlist()に割り当てるのは不適当な仕様ではないでしょうか。
26
+
27
+ 普通に受け取って添え字0からのアクセスをしたほうが良いと思います。
28
+
29
+ 一応[count()](https://www.php.net/manual/ja/function.count.php)でのチェックも入れておけば
30
+
31
+ 想定の形でないと担保もできなくないです。
2
32
 
3
33
 
4
34
 
@@ -30,8 +60,36 @@
30
60
 
31
61
  test("a");
32
62
 
63
+ ```
33
64
 
65
+
66
+
67
+ 上記の通り、checkdate()は引数が数字である前提で組まれている機能なので、その前提を全てクリアしたうえでのチェックをしないとWarningが消えることはないです。
68
+
69
+
70
+
71
+ 想定しているフォーマットがあるのでしたらdate()でチェックしたほうがいいのでは?
72
+
73
+
74
+
75
+ ```php
76
+
77
+ if($birth != null && $date !== date('Y-n-j',strtotime($birth))){
78
+
79
+
80
+
81
+ }
34
82
 
35
83
 
36
84
 
37
85
  ```
86
+
87
+
88
+
89
+ [empty()](https://www.php.net/manual/ja/function.empty.php)は0もtrueになるので注意が必要。
90
+
91
+ filter_input()利用しているのであれば、nullでなければフォーマットチェックに通しても差し支えないと思います。
92
+
93
+
94
+
95
+ 参考にした記事も6年前の個人の記事なので、全然参考にできません。

1

edit

2021/03/07 09:31

投稿

m.ts10806
m.ts10806

スコア80875

test CHANGED
@@ -1,3 +1,7 @@
1
+ # 途中で送信してしまったので編集中
2
+
3
+
4
+
1
5
  > あああなど、文字列を送信→Warning: checkdate() expects parameter 3 to be intエラー
2
6
 
3
7
 
@@ -12,11 +16,19 @@
12
16
 
13
17
 
14
18
 
15
- 型宣言で引数の型が指定されているためのエラー。
19
+ [型宣言](https://www.php.net/manual/ja/language.types.declarations.php)で引数の型が指定されているためのエラー。
16
20
 
17
21
 
18
22
 
23
+ ミニマムコード
24
+
19
25
  ```php
26
+
27
+ <?php
28
+
29
+ function test(int $a){}
30
+
31
+ test("a");
20
32
 
21
33
 
22
34