回答編集履歴

1

["317","311"]を動的化

2015/10/25 17:56

投稿

TetsujiMiwa
TetsujiMiwa

スコア1124

test CHANGED
@@ -13,3 +13,129 @@
13
13
  if(strpos($value, $group) !== 0) continue; // 対象配列以外は読み飛ばす
14
14
 
15
15
  を実装してみてください。
16
+
17
+ ---
18
+
19
+
20
+
21
+ foreach(["317","311"] as $group) {
22
+
23
+ の部分を、動的化するには、
24
+
25
+ foreach($groupList as $group) {
26
+
27
+ と、["317","311"]を変数化する事を思いつけると良いです。
28
+
29
+
30
+
31
+ で、$groupListを事前に作るのですが、
32
+
33
+ どう実装をするか?の前に、
34
+
35
+ 修正前の現状仕様がどうなっているか把握し、
36
+
37
+ また、どういう仕様に修正するのかをきっちり決めてみてください。
38
+
39
+ と、言いますのは、テキストエリアに"200######"なしで、
40
+
41
+ $groupList = ["317","311","200"];
42
+
43
+ としてみて動きを見てみてください。
44
+
45
+ 頭が0#で始まる、不明な出力が出て来ますよね。
46
+
47
+ 恐らく、こういうのは意図していないのではないでしょうか。
48
+
49
+
50
+
51
+ 『**修正前の現状仕様がどうなっているか把握し、**』について
52
+
53
+
54
+
55
+ ご質問内で、
56
+
57
+ > 最後の317######は無視
58
+
59
+ とおっしゃってますが、私から見ますと、重要なデータに見受けられます。
60
+
61
+ 試しに、そのデータ無しに、ご自身で書かれたコードを動かしてみてください。
62
+
63
+ 恐らく、期待する結果とはならないのではないでしょうか。
64
+
65
+ この辺り、データ1つ1つどのような意味があって、
66
+
67
+ 期待する処理結果が何であったのか、をしっかりと把握して欲しいです。
68
+
69
+
70
+
71
+ 『**どういう仕様に修正するのかをきっちり決めて**』について
72
+
73
+
74
+
75
+ - ①最終的にどのような処理結果とするのかを「**きっちり**」決める
76
+
77
+
78
+
79
+ 例えば、テキストエリアに200開始の配列がなくても、
80
+
81
+ 結果には200開始の処理結果を出力したい、など、
82
+
83
+ 一言に「任意」といっても期待する結果は多種存在しますよね。
84
+
85
+ なので、どういう仕様にするかきっちり決める必要があります。
86
+
87
+
88
+
89
+ - ②「**どういう仕様に修正するか**」決める
90
+
91
+
92
+
93
+ ご自身の思い描く仕様修正が、修正箇所ごとに追加なのか変更なのか、
94
+
95
+ 現状仕様と照らしあわせて、検討してみてください。
96
+
97
+
98
+
99
+ ご参考までに、私の当初回答を覧ていただきたいですが、
100
+
101
+ 質問前の仕様をブラックボックス的に捉え、
102
+
103
+ 317に加えて311を増やすという、
104
+
105
+ 仕様追加の形で回答させていただきました。
106
+
107
+ なので、質問のコードの変更のない形での回答となった次第です。
108
+
109
+ (※処理の流れは変わっていますので、この意味での「コードの変更のない」は語弊があります。)
110
+
111
+
112
+
113
+ これらから、ようやく実装の修正方法が、
114
+
115
+ つまり、$groupListの作り方や既存部分の修正可否が明確になってきます。
116
+
117
+
118
+
119
+ 長々とした説明となってしまいましたが、$groupListの作り方だけ、一例として載せておきます。
120
+
121
+ ```ここに言語を入力
122
+
123
+ $groupList = array();
124
+
125
+ foreach($data_array as $value) {
126
+
127
+ $header = explode('#', $value)[0];
128
+
129
+ if(!in_array($header, $groupList)) {
130
+
131
+ array_push($groupList,$header);
132
+
133
+ }
134
+
135
+ }
136
+
137
+
138
+
139
+ var_dump($groupList); // $groupListのチェック
140
+
141
+ ```