回答編集履歴

3

Fix MarkDown

2020/06/29 17:16

投稿

y_shinoda
y_shinoda

スコア3272

test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
 
44
44
 
45
- ``php
45
+ ```php
46
46
 
47
47
  <?php
48
48
 
@@ -80,7 +80,7 @@
80
80
 
81
81
 
82
82
 
83
- ```
83
+ ```console
84
84
 
85
85
  before test
86
86
 
@@ -98,7 +98,7 @@
98
98
 
99
99
 
100
100
 
101
- ``php
101
+ ```php
102
102
 
103
103
  <?php
104
104
 
@@ -150,7 +150,7 @@
150
150
 
151
151
 
152
152
 
153
- ```
153
+ ```console
154
154
 
155
155
  before test
156
156
 

2

Add expression

2020/06/29 17:16

投稿

y_shinoda
y_shinoda

スコア3272

test CHANGED
@@ -9,3 +9,175 @@
9
9
  最後の `$count--;` がないと、
10
10
 
11
11
  連続して呼び出したときは 2回目は `11`, 3回目は `12` となってしまうでしょう
12
+
13
+
14
+
15
+ ## 追記: なぜ `$count` がゼロまで戻るのか
16
+
17
+
18
+
19
+ > `$count--;` は1回のみの動作で終了してしまうと思うのですがなぜゼロまで戻るのでしょうか?
20
+
21
+
22
+
23
+ 処理が関数 `test()` の中 10 回入っていったので、
24
+
25
+ `test()` の中から 10 回出てきたためです
26
+
27
+ 1 回ではありません
28
+
29
+
30
+
31
+ ### 検証
32
+
33
+
34
+
35
+ 同じ関数に再帰的に入っていくので理解が難しくなっているかもしれないので
36
+
37
+ 違う関数に入っていく場合を考えてみましょう
38
+
39
+
40
+
41
+ 次の例を実行してみましょう:
42
+
43
+
44
+
45
+ ``php
46
+
47
+ <?php
48
+
49
+ function test()
50
+
51
+ {
52
+
53
+ echo "before test\n";
54
+
55
+ testtest();
56
+
57
+ echo "after test\n";
58
+
59
+ }
60
+
61
+
62
+
63
+ function testtest()
64
+
65
+ {
66
+
67
+ echo "before testtest\n";
68
+
69
+ echo "after testtest\n";
70
+
71
+ }
72
+
73
+ ?>
74
+
75
+ ```
76
+
77
+
78
+
79
+ 実行結果:
80
+
81
+
82
+
83
+ ```
84
+
85
+ before test
86
+
87
+ before testtest
88
+
89
+ after testtest
90
+
91
+ after test
92
+
93
+ ```
94
+
95
+
96
+
97
+ さらに次の例を実行してみましょう:
98
+
99
+
100
+
101
+ ``php
102
+
103
+ <?php
104
+
105
+ function test()
106
+
107
+ {
108
+
109
+ echo "before test\n";
110
+
111
+ testtest();
112
+
113
+ echo "after test\n";
114
+
115
+ }
116
+
117
+
118
+
119
+ function testtest()
120
+
121
+ {
122
+
123
+ echo "before testtest\n";
124
+
125
+ testtesttest();
126
+
127
+ echo "after testtest\n";
128
+
129
+ }
130
+
131
+
132
+
133
+ function testtesttest()
134
+
135
+ {
136
+
137
+ echo "before testtesttest\n";
138
+
139
+ echo "after testtesttest\n";
140
+
141
+ }
142
+
143
+ ?>
144
+
145
+ ```
146
+
147
+
148
+
149
+ 実行結果:
150
+
151
+
152
+
153
+ ```
154
+
155
+ before test
156
+
157
+ before testtest
158
+
159
+ before testtesttest
160
+
161
+ after testtesttest
162
+
163
+ after testtest
164
+
165
+ after test
166
+
167
+ ```
168
+
169
+
170
+
171
+ ご覧のように、関数呼び出しの後の処理は、
172
+
173
+ 関数呼び出しが完了した後に実行されます
174
+
175
+
176
+
177
+ 再帰呼び出しの場合も同様です
178
+
179
+
180
+
181
+ 複数回関数呼び出しを行うということは、
182
+
183
+ 呼び出した回数だけ、関数呼び出し後の処理も実行されます

1

Describe details

2020/06/29 17:14

投稿

y_shinoda
y_shinoda

スコア3272

test CHANGED
@@ -1,6 +1,6 @@
1
1
  コードの作者の意図を予想した、おそらくの回答ですが、
2
2
 
3
- 次に `test()` を呼び出したときに `12345678910` と出力させるため
3
+ 連続して `test()` を呼び出したときに再び `12345678910` と出力させるため
4
4
 
5
5
  と思われます
6
6
 
@@ -8,4 +8,4 @@
8
8
 
9
9
  最後の `$count--;` がないと、
10
10
 
11
- 次に呼び出したときは `11` となってしまうでしょう
11
+ 連続して呼び出したときは 2回目は `11`, 3回目は `12` となってしまうでしょう