回答編集履歴

5

見直し

2018/08/22 04:01

投稿

退会済みユーザー
test CHANGED
@@ -48,19 +48,13 @@
48
48
 
49
49
  ```php
50
50
 
51
- function sanitize($before)
51
+ function sanitize($before) {
52
52
 
53
- {
54
-
55
- if (is_array($before))
53
+ if (is_array($before)) {
56
-
57
- {
58
54
 
59
55
  $after = array(); // []; でもよい
60
56
 
61
- foreach ($before as $key=>$value)
57
+ foreach ($before as $key=>$value) {
62
-
63
- {
64
58
 
65
59
  $after[$key] = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
66
60
 

4

加筆修正

2018/08/22 04:01

投稿

退会済みユーザー
test CHANGED
@@ -44,21 +44,37 @@
44
44
 
45
45
 
46
46
 
47
+ もうちょっと直すと、
48
+
47
49
  ```php
48
50
 
49
51
  function sanitize($before)
50
52
 
51
53
  {
52
54
 
53
- foreach($before as $key=>$value)
55
+ if (is_array($before))
54
56
 
55
57
  {
56
58
 
59
+ $after = array(); // []; でもよい
60
+
61
+ foreach ($before as $key=>$value)
62
+
63
+ {
64
+
57
- $after[$key] = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
65
+ $after[$key] = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
66
+
67
+ }
68
+
69
+ return $after;
58
70
 
59
71
  }
60
72
 
61
- return $after;
73
+ else {
74
+
75
+ return htmlspecialchars($before, ENT_QUOTES, 'UTF-8');
76
+
77
+ }
62
78
 
63
79
  }
64
80
 
@@ -70,17 +86,15 @@
70
86
 
71
87
  その変数名を$beforeにしています。
72
88
 
73
- $before配列であるとみしてforeach()ループで順次キーと値のセットを取り出しています。
89
+ $before配列であるなら、
74
90
 
75
- $afterは(初期化されていないものの)$beforeから取り出すキーを使ってを加工したものを格納しています。
91
+ foreach()ループで順次キー値のセット取り出しています。
76
92
 
77
- そもそもこの関数内で突然登場した$afterは(初期化されていないものの)カラなので、
78
-
79
- 配列として使えばカラ配列とみなされ、
80
-
81
- 順次読みされた値を加工したもの格納されています。
93
+ $afterに$beforeから取りすキーを使って値を加工したもの格納ています。
82
94
 
83
95
  それを最後にreturn文で返しています。
96
+
97
+ 配列でないならば、単に加工したものをreturn文で返しています。
84
98
 
85
99
 
86
100
 

3

加筆修正

2018/08/22 04:00

投稿

退会済みユーザー
test CHANGED
@@ -54,7 +54,7 @@
54
54
 
55
55
  {
56
56
 
57
- $after[$key] = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
57
+ $after[$key] = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
58
58
 
59
59
  }
60
60
 

2

加筆修正

2018/08/22 03:56

投稿

退会済みユーザー
test CHANGED
@@ -41,3 +41,49 @@
41
41
  `$after[$key]=htmlspecialchars($value,ENT_QUOTES,'UTF-8');`
42
42
 
43
43
  の記述で`$after`が配列であると判断されて動作します。
44
+
45
+
46
+
47
+ ```php
48
+
49
+ function sanitize($before)
50
+
51
+ {
52
+
53
+ foreach($before as $key=>$value)
54
+
55
+ {
56
+
57
+ $after[$key] = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
58
+
59
+ }
60
+
61
+ return $after;
62
+
63
+ }
64
+
65
+ ```
66
+
67
+ sanitizeというユーザー関数の宣言として、
68
+
69
+ 一つの引数をとり、
70
+
71
+ その変数名を$beforeにしています。
72
+
73
+ $beforeは配列であるとみなしてforeach()ループで順次キーと値のセットを取り出しています。
74
+
75
+ $afterは(初期化されていないものの)$beforeから取り出すキーを使って値を加工したものを格納しています。
76
+
77
+ そもそもこの関数内で突然登場した$afterは(初期化されていないものの)カラなので、
78
+
79
+ 配列として使えばカラ配列とみなされ、
80
+
81
+ 順次読み出された値を加工したものが格納されていきます。
82
+
83
+ それを最後にreturn文で返しています。
84
+
85
+
86
+
87
+ もしも、関数の外で`$before`や`$after`が使われていても、
88
+
89
+ sanitizeで使っているそれとは関わりがありません。

1

typo修正

2018/08/22 03:54

投稿

退会済みユーザー
test CHANGED
@@ -1,6 +1,6 @@
1
- >・sanitizeの引数がなぜ「$before」という変数に設定されているか。
1
+ > ・sanitizeの引数がなぜ「$before」という変数に設定されているか。
2
2
 
3
- >($_POSTで受け取ったデータ)
3
+ > ($_POSTで受け取ったデータ)
4
4
 
5
5
 
6
6