質問編集履歴

2

追加

2018/07/04 07:46

投稿

hamadakana
hamadakana

スコア6

test CHANGED
File without changes
test CHANGED
@@ -161,3 +161,183 @@
161
161
  $dataをsetReserveで処理し$data1に中身を書き換えたものをisTantoで処理したいという流れです。
162
162
 
163
163
  ご協力をお願いします。
164
+
165
+
166
+
167
+ ```
168
+
169
+ <?php
170
+
171
+
172
+
173
+ class First{
174
+
175
+
176
+
177
+ public $data;
178
+
179
+ public function __construct(){
180
+
181
+ $this->data=array(
182
+
183
+ 'RT' => array(0,1,1,0,0,1,1,0,0),
184
+
185
+ 'YN' => array(0,0,1,1,0,0,0,0,0),
186
+
187
+ 'KY' => array(0,0,0,0,0,0,0,0,0),
188
+
189
+ 'KH' => array(0,0,0,1,1,0,0,0,0),
190
+
191
+ 'MM' => array(0,0,0,0,0,0,0,0,0));
192
+
193
+ }
194
+
195
+ public function setReserve($start,$course_time,$tanto){
196
+
197
+
198
+
199
+ //function作成
200
+
201
+ $point=$start-10;
202
+
203
+ //起点を決める
204
+
205
+ $yoyaku=array_slice($this->data[$tanto],$point,$course_time);
206
+
207
+ //var_dump($yoyaku);
208
+
209
+
210
+
211
+ $han=1;
212
+
213
+
214
+
215
+ if(in_array($han,$yoyaku)){
216
+
217
+ echo '予約追加できませんでした…';
218
+
219
+ return $this->data;
220
+
221
+ }
222
+
223
+ else
224
+
225
+ {
226
+
227
+ $yoyaku2=str_replace(0,1,$yoyaku);
228
+
229
+ //var_dump($yoyaku2);
230
+
231
+ global $yoyaku3;
232
+
233
+ $yoyaku3=array_splice($this->data[$tanto],$point,$course_time,$yoyaku2);
234
+
235
+ //var_dump($yoyaku3);
236
+
237
+ //var_dump($data);
238
+
239
+ //$data1=$data;
240
+
241
+ //var_dump($data);
242
+
243
+ $data1=$this->data;
244
+
245
+
246
+
247
+
248
+
249
+ echo '予約追加できました!';
250
+
251
+ return $data1;
252
+
253
+ }
254
+
255
+ }
256
+
257
+ }
258
+
259
+
260
+
261
+
262
+
263
+ //$obj= new First();
264
+
265
+ //$obj->setReserve(12,2,'KY');
266
+
267
+
268
+
269
+
270
+
271
+ class Next extends First{
272
+
273
+ function getTanto($start2,$course_time2,$value_array2){
274
+
275
+ //functionを作成する
276
+
277
+ $point2 = $start2-10;
278
+
279
+ //起点を決める
280
+
281
+ foreach($value_array2 as $key => $youso){
282
+
283
+ //繰り返し処理
284
+
285
+ $yoya = array_slice($value_array2[$key],$point2,$course_time2);
286
+
287
+ //該当時間を切り出す
288
+
289
+ //var_dump($yoyaku);
290
+
291
+ if ( array_sum($yoya)== 0 ){
292
+
293
+ //足して
294
+
295
+ //もし0ならば$keyを$retに代入する
296
+
297
+ $ret[]=$key;
298
+
299
+ //出てきた担当者を配列に入れていく
300
+
301
+ // var_dump($ret);
302
+
303
+ }
304
+
305
+ }
306
+
307
+ foreach($ret as $value){
308
+
309
+ echo $value;
310
+
311
+ }
312
+
313
+ //functionを$retで返す
314
+
315
+ }
316
+
317
+ }
318
+
319
+
320
+
321
+
322
+
323
+
324
+
325
+
326
+
327
+ $comb= new Next();
328
+
329
+ $value_array2 = $comb->setReserve(12,2,'KY');
330
+
331
+ $comb->getTanto(12,2,$value_array2);
332
+
333
+
334
+
335
+
336
+
337
+ コード
338
+
339
+ ```
340
+
341
+ 上記のものが出来ないのをうけて承継形式で作り変えてみたのですが、
342
+
343
+ それでは関数の利用と変わらないとの指摘を受けてしまい、苦戦しているところです。

1

書式の改善

2018/07/04 07:46

投稿

hamadakana
hamadakana

スコア6

test CHANGED
File without changes
test CHANGED
@@ -1,22 +1,4 @@
1
- クラス化を行いたいのですが、うまくできません。
2
-
3
- 内容としては$dataを最初のfunctionで配列の一部を変更し
4
-
5
- その後isTantoのfunctionで変更後の配列を利用して結果を反映させたいです。
6
-
7
- グローバル変数の利用を避けて実現したいです。
1
+ `````
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
2
 
21
3
  <?php
22
4
 
@@ -92,7 +74,7 @@
92
74
 
93
75
  //var_dump($data);
94
76
 
95
- global $data1;
77
+
96
78
 
97
79
  $data1=$this->data;
98
80
 
@@ -164,4 +146,18 @@
164
146
 
165
147
  $obj->setReserve(12,2,'KY');
166
148
 
167
- $obj->isTanto(12,2,'KY');
149
+ $obj->isTanto();
150
+
151
+ ```
152
+
153
+
154
+
155
+ クラス化を行いたいです。
156
+
157
+ クラスの中にfunctionが二つあり、一つ目のfunctionで処理した結果を二つ目のfunctionで利用する方法がわかりません。
158
+
159
+ もともとグローバル変数を利用していたがグローバル変数の使用が禁止されてしまっためその他の方法を探しています。
160
+
161
+ $dataをsetReserveで処理し$data1に中身を書き換えたものをisTantoで処理したいという流れです。
162
+
163
+ ご協力をお願いします。