質問編集履歴

2

*編集前の質問を消してしまったため、後半に追記しました。 ご迷惑をおかけ申し訳ありません。

2020/01/18 09:16

投稿

ayala
ayala

スコア6

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,9 @@
1
+ *編集前の質問を消してしまったため、後半に追記しました。
2
+
3
+ ご迷惑をおかけ申し訳ありません。
4
+
5
+
6
+
1
7
  ## 前提・実現したいこと
2
8
 
3
9
 
@@ -185,3 +191,97 @@
185
191
  PHP Notice: Array to string conversion in /workspace/Main.php on line 16
186
192
 
187
193
  ```
194
+
195
+
196
+
197
+ ##編集前の内容
198
+
199
+
200
+
201
+ ###PHPの配列で複数のキーに一つの値を入れたい場合
202
+
203
+ PHPの配列で複数のキーに一つの値を入れ置換するやり方が知りたいです。
204
+
205
+
206
+
207
+ 下記の「元ソースコード」を「イメージのソース」のように
208
+
209
+ 複数のキーに一つの値を入れる際に1行ですませるようにしたいです。
210
+
211
+
212
+
213
+ ### 元のソースコード
214
+
215
+
216
+
217
+ ```php
218
+
219
+ <?php
220
+
221
+
222
+
223
+
224
+
225
+ $replace = [
226
+
227
+ '山梨放送' => '山梨県',
228
+
229
+ 'テレビ山梨' => '山梨県',
230
+
231
+ ];
232
+
233
+
234
+
235
+ print_r($replace);
236
+
237
+
238
+
239
+ ?>
240
+
241
+
242
+
243
+ ```
244
+
245
+
246
+
247
+ ### イメージのソースコード
248
+
249
+
250
+
251
+ ```php
252
+
253
+ <?php
254
+
255
+
256
+
257
+ $yamanashi = ['山梨放送','テレビ山梨' ];
258
+
259
+
260
+
261
+ $replace = [
262
+
263
+ $yamanashi => '山梨県'
264
+
265
+ ];
266
+
267
+
268
+
269
+ print_r($replace);
270
+
271
+ ?>
272
+
273
+
274
+
275
+ ```
276
+
277
+ ```
278
+
279
+ エラーメッセージ
280
+
281
+
282
+
283
+ PHP Warning: Illegal offset type in /workspace/Main.php on line 6
284
+
285
+
286
+
287
+ ```

1

*編集追記:自分の質問した範囲で解決できると思っていましたができませんでしたので 内容を編集し、「どう使いたいか」を追記させていたしました。 意図や内容がわかりづらく申し訳ありませんでした。

2020/01/18 09:16

投稿

ayala
ayala

スコア6

test CHANGED
@@ -1 +1 @@
1
- PHPの配列で複数のキーに一つの値を入れたい場合
1
+ PHPの連想配列で複数のキーに一つの値を入れ置換したい場合
test CHANGED
@@ -1,42 +1,32 @@
1
- ### 前提・実現したいこと
1
+ ## 前提・実現したいこと
2
2
 
3
3
 
4
4
 
5
+ PHPの連想配列を用い置換したいのですが
6
+
5
- PHPで配列を使って、複数のキーに一つの値を入れたいです。
7
+ その際に、複数のキーに一つの値を入れ置換するやり方が知りたいです。
6
8
 
7
9
 
8
10
 
9
11
 
10
12
 
11
-
12
-
13
- ### 発生してる問題・エラーメッセージ
13
+ ##どう使たいか
14
14
 
15
15
 
16
16
 
17
+ 例として、下記に書かれている**「元のソースコード**」では放送局の数だけ要素を作る必要があるので
18
+
17
- 配列使って置換ようと考えてす。
19
+ **「イメージのソースコード」**のように都道府県ごとに放送局一つにまとめ都道府県名に置換しす。
18
20
 
19
21
 
20
22
 
21
- 1行で、複数のキーに一つの値を入れるやり方がわかりません。
23
+ ## 問題
22
24
 
23
- キーの数だけ行書けばできのですが、1行ですませるにはどうすればよいでしょうか?
25
+ 配列で複数のキーに一つ入れ、それを連想配列に入れることはできのですが
24
26
 
27
+ 置換を行おうとするとエラーになります。
25
28
 
26
-
27
- 意図としては、下記書かれている**「元のソースコード**」を**「イメージのソースコード**のようなイメージで表示できるようにしたいです
29
+ エラーなったコード内容とエラー内容は**「試したたこと**」に記載ました。
28
-
29
-
30
-
31
-
32
-
33
- ```
34
-
35
- エラーメッセージ
36
-
37
- PHP Warning: Illegal offset type in /workspace/Main.php on line 6
38
-
39
- ```
40
30
 
41
31
 
42
32
 
@@ -50,19 +40,33 @@
50
40
 
51
41
 
52
42
 
43
+ $target = 'テレビ山梨, 新潟放送, 新潟テレビ21';
44
+
45
+
46
+
53
47
  $replace = [
54
48
 
55
- '山梨放送' => '山梨県',
49
+ '山梨放送' => '山梨県',
56
50
 
57
- 'テレビ山梨' => '山梨県',
51
+ 'テレビ山梨' => '山梨県',
58
52
 
59
- ];
53
+ '新潟放送' => '新潟県',
60
54
 
61
-
55
+ 'テレビ新潟' => '新潟県',
62
56
 
63
-
57
+ '新潟総合テレビ' => '新潟県',
64
58
 
59
+ '新潟テレビ21' => '新潟県',
60
+
61
+ ];
62
+
63
+
64
+
65
+ echo str_replace(array_keys($replace), array_values($replace), $target);
66
+
67
+
68
+
65
- print_r($replace);
69
+ // 結果 山梨県, 新潟県, 新潟県
66
70
 
67
71
  ?>
68
72
 
@@ -71,14 +75,6 @@
71
75
  ```
72
76
 
73
77
 
74
-
75
-
76
-
77
- ### 試したこと
78
-
79
- 上のソースコードから、実現したいイメージのコードは以下のとおりです。
80
-
81
- しかし、これだとエラーが出てしまいます。
82
78
 
83
79
 
84
80
 
@@ -92,7 +88,13 @@
92
88
 
93
89
 
94
90
 
91
+ $target = 'テレビ山梨, 新潟放送, 新潟テレビ21';
92
+
93
+
94
+
95
95
  $yamanashi = ['山梨放送','テレビ山梨' ];
96
+
97
+ $niigata = ['新潟放送', 'テレビ新潟', '新潟総合テレビ', '新潟テレビ21' ];
96
98
 
97
99
 
98
100
 
@@ -100,15 +102,75 @@
100
102
 
101
103
  $yamanashi => '山梨県'
102
104
 
105
+ $niigata => '新潟県'
106
+
107
+ ];
108
+
109
+
110
+
111
+ echo str_replace(array_keys($replace), array_values($replace), $target);
112
+
113
+ ?>
114
+
115
+
116
+
117
+ ```
118
+
119
+
120
+
121
+
122
+
123
+ ## 試したこと
124
+
125
+
126
+
127
+ ### エラーが出たソースコード
128
+
129
+
130
+
131
+ ```php
132
+
133
+
134
+
135
+ <?php
136
+
137
+
138
+
139
+ $target = 'テレビ山梨, 新潟放送, 新潟テレビ21';
140
+
141
+
142
+
143
+ $yamanashi = ['山梨放送','テレビ山梨' ];
144
+
145
+ $res = array_combine( $yamanashi, array_pad( [], count( $yamanashi ), '山梨県' ) );
146
+
147
+
148
+
149
+ $replace = [
150
+
151
+ $res,
152
+
153
+ '新潟放送' => '新潟県',
154
+
155
+ 'テレビ新潟' => '新潟県',
156
+
157
+ '新潟総合テレビ' => '新潟県',
158
+
159
+ '新潟テレビ21' => '新潟県',
160
+
103
161
  ];
104
162
 
105
163
 
106
164
 
107
-
165
+ echo str_replace(array_keys($replace), array_values($replace), $target);
108
166
 
109
- print_r($replace);
167
+
110
168
 
111
169
  ?>
170
+
171
+
172
+
173
+
112
174
 
113
175
 
114
176
 
@@ -118,16 +180,8 @@
118
180
 
119
181
  エラーメッセージ
120
182
 
183
+
184
+
121
- PHP Warning: Illegal offset type in /workspace/Main.php on line 6
185
+ PHP Notice: Array to string conversion in /workspace/Main.php on line 16
122
186
 
123
187
  ```
124
-
125
-
126
-
127
-
128
-
129
- ### 補足情報(FW/ツールのバージョンなど)
130
-
131
-
132
-
133
- ここにより詳細な情報を記載してください。