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

回答編集履歴

3

edit

2021/03/07 09:32

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -13,7 +13,7 @@
13
13
  むしろ、前提が必要なlist()に割り当てるのは不適当な仕様ではないでしょうか。
14
14
  普通に受け取って添え字0からのアクセスをしたほうが良いと思います。
15
15
  一応[count()](https://www.php.net/manual/ja/function.count.php)でのチェックも入れておけば
16
- 想定の形でないと担保もできなくないです。
16
+ 想定の形と担保もできなくないです。
17
17
 
18
18
  > あああなど、文字列を送信→Warning: checkdate() expects parameter 3 to be intエラー
19
19
 

2

edit

2021/03/07 09:32

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -1,5 +1,20 @@
1
- # 途中で送信してしまったので編集中
1
+ > で送信→offsetエラー
2
2
 
3
+ listに割り当てるだけのデータができません。
4
+ ```php
5
+ <?php
6
+ list($Y, $m, $d) = explode('-', "");
7
+ ```
8
+ [list()](https://www.php.net/manual/ja/function.list.php)
9
+
10
+ nullでないこと、空でないこと など事前のチェックが必要。
11
+ 省略できない引数がある機能を使うときは絶対に必要。
12
+
13
+ むしろ、前提が必要なlist()に割り当てるのは不適当な仕様ではないでしょうか。
14
+ 普通に受け取って添え字0からのアクセスをしたほうが良いと思います。
15
+ 一応[count()](https://www.php.net/manual/ja/function.count.php)でのチェックも入れておけば
16
+ 想定の形でないと担保もできなくないです。
17
+
3
18
  > あああなど、文字列を送信→Warning: checkdate() expects parameter 3 to be intエラー
4
19
 
5
20
 
@@ -14,6 +29,20 @@
14
29
  <?php
15
30
  function test(int $a){}
16
31
  test("a");
32
+ ```
17
33
 
34
+ 上記の通り、checkdate()は引数が数字である前提で組まれている機能なので、その前提を全てクリアしたうえでのチェックをしないとWarningが消えることはないです。
18
35
 
36
+ 想定しているフォーマットがあるのでしたらdate()でチェックしたほうがいいのでは?
37
+
38
+ ```php
39
+ if($birth != null && $date !== date('Y-n-j',strtotime($birth))){
40
+
41
+ }
42
+
19
- ```
43
+ ```
44
+
45
+ [empty()](https://www.php.net/manual/ja/function.empty.php)は0もtrueになるので注意が必要。
46
+ filter_input()利用しているのであれば、nullでなければフォーマットチェックに通しても差し支えないと思います。
47
+
48
+ 参考にした記事も6年前の個人の記事なので、全然参考にできません。

1

edit

2021/03/07 09:31

投稿

m.ts10806
m.ts10806

スコア80888

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