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

質問編集履歴

2

追加

2018/07/04 07:46

投稿

hamadakana
hamadakana

スコア6

title CHANGED
File without changes
body CHANGED
@@ -79,4 +79,94 @@
79
79
  クラスの中にfunctionが二つあり、一つ目のfunctionで処理した結果を二つ目のfunctionで利用する方法がわかりません。
80
80
  もともとグローバル変数を利用していたがグローバル変数の使用が禁止されてしまっためその他の方法を探しています。
81
81
  $dataをsetReserveで処理し$data1に中身を書き換えたものをisTantoで処理したいという流れです。
82
- ご協力をお願いします。
82
+ ご協力をお願いします。
83
+
84
+ ```
85
+ <?php
86
+
87
+ class First{
88
+
89
+ public $data;
90
+ public function __construct(){
91
+ $this->data=array(
92
+ 'RT' => array(0,1,1,0,0,1,1,0,0),
93
+ 'YN' => array(0,0,1,1,0,0,0,0,0),
94
+ 'KY' => array(0,0,0,0,0,0,0,0,0),
95
+ 'KH' => array(0,0,0,1,1,0,0,0,0),
96
+ 'MM' => array(0,0,0,0,0,0,0,0,0));
97
+ }
98
+ public function setReserve($start,$course_time,$tanto){
99
+
100
+ //function作成
101
+ $point=$start-10;
102
+ //起点を決める
103
+ $yoyaku=array_slice($this->data[$tanto],$point,$course_time);
104
+ //var_dump($yoyaku);
105
+
106
+ $han=1;
107
+
108
+ if(in_array($han,$yoyaku)){
109
+ echo '予約追加できませんでした…';
110
+ return $this->data;
111
+ }
112
+ else
113
+ {
114
+ $yoyaku2=str_replace(0,1,$yoyaku);
115
+ //var_dump($yoyaku2);
116
+ global $yoyaku3;
117
+ $yoyaku3=array_splice($this->data[$tanto],$point,$course_time,$yoyaku2);
118
+ //var_dump($yoyaku3);
119
+ //var_dump($data);
120
+ //$data1=$data;
121
+ //var_dump($data);
122
+ $data1=$this->data;
123
+
124
+
125
+ echo '予約追加できました!';
126
+ return $data1;
127
+ }
128
+ }
129
+ }
130
+
131
+
132
+ //$obj= new First();
133
+ //$obj->setReserve(12,2,'KY');
134
+
135
+
136
+ class Next extends First{
137
+ function getTanto($start2,$course_time2,$value_array2){
138
+ //functionを作成する
139
+ $point2 = $start2-10;
140
+ //起点を決める
141
+ foreach($value_array2 as $key => $youso){
142
+ //繰り返し処理
143
+ $yoya = array_slice($value_array2[$key],$point2,$course_time2);
144
+ //該当時間を切り出す
145
+ //var_dump($yoyaku);
146
+ if ( array_sum($yoya)== 0 ){
147
+ //足して
148
+ //もし0ならば$keyを$retに代入する
149
+ $ret[]=$key;
150
+ //出てきた担当者を配列に入れていく
151
+ // var_dump($ret);
152
+ }
153
+ }
154
+ foreach($ret as $value){
155
+ echo $value;
156
+ }
157
+ //functionを$retで返す
158
+ }
159
+ }
160
+
161
+
162
+
163
+
164
+ $comb= new Next();
165
+ $value_array2 = $comb->setReserve(12,2,'KY');
166
+ $comb->getTanto(12,2,$value_array2);
167
+
168
+
169
+ コード
170
+ ```
171
+ 上記のものが出来ないのをうけて承継形式で作り変えてみたのですが、
172
+ それでは関数の利用と変わらないとの指摘を受けてしまい、苦戦しているところです。

1

書式の改善

2018/07/04 07:46

投稿

hamadakana
hamadakana

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,13 +1,4 @@
1
- クラス化を行いたいのですが、うまくできません。
2
- 内容としては$dataを最初のfunctionで配列の一部を変更し
3
- その後isTantoのfunctionで変更後の配列を利用して結果を反映させたいです。
4
- グローバル変数の利用を避けて実現したいです。
1
+ `````
5
-
6
-
7
-
8
-
9
-
10
-
11
2
  <?php
12
3
 
13
4
  class hoge{
@@ -45,7 +36,7 @@
45
36
  //var_dump($data);
46
37
  //$data1=$data;
47
38
  //var_dump($data);
48
- global $data1;
39
+
49
40
  $data1=$this->data;
50
41
 
51
42
  echo '予約追加できました!';
@@ -81,4 +72,11 @@
81
72
 
82
73
  $obj = new hoge();
83
74
  $obj->setReserve(12,2,'KY');
84
- $obj->isTanto(12,2,'KY');
75
+ $obj->isTanto();
76
+ ```
77
+
78
+ クラス化を行いたいです。
79
+ クラスの中にfunctionが二つあり、一つ目のfunctionで処理した結果を二つ目のfunctionで利用する方法がわかりません。
80
+ もともとグローバル変数を利用していたがグローバル変数の使用が禁止されてしまっためその他の方法を探しています。
81
+ $dataをsetReserveで処理し$data1に中身を書き換えたものをisTantoで処理したいという流れです。
82
+ ご協力をお願いします。