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

回答編集履歴

1

追記

2021/08/04 06:47

投稿

tanat
tanat

スコア18778

answer CHANGED
@@ -18,7 +18,11 @@
18
18
 
19
19
  とかそういう感じで重複しない様にするか、関数等でスコープを区切る様にするのが安全です。
20
20
 
21
+ また、これは致命的では無く既存コードやプロジェクトとの兼ね合いもあるとは思いますが、
22
+ PHP5.4以降のコードを書く場合、配列の定義はarray()よりも[](短縮構文)の方がすっきりします。
23
+ (array()で書いていると、教科書が相当古いとか、元になっているコードが相当古いという印象を受けるので、特に理由が無ければ[]で記述されることをお勧めします。)
21
24
 
25
+
22
26
  原因
23
27
  ---
24
28
 
@@ -162,24 +166,35 @@
162
166
 
163
167
  解決方法としては、各データを`$arr['response']['station']`の要素として追加していきましょう。
164
168
 
165
- ポイントはこの辺で
169
+ 初期データで同じように書いた場合はこんな感じ
170
+
166
171
  ```PHP
167
-
168
- $arr['response']['station'][] = array(
172
+ $db['db']['station'][] = [
169
- 'name' => $name,
173
+ 'name' => '三ノ宮',
170
- 'prefecture' => $prefecture,
174
+ 'prefecture' => '兵庫県',
171
- 'line' => $line,
175
+ 'line' => 'JR神戸線',
172
- 'x' => $longitude,
176
+ 'x' => 135.1952558,
173
- 'y' => $latitude,
177
+ 'y' => 34.6945454,
174
- 'postal' => $postal,
178
+ 'postal' => '6770039',
175
- 'distance' => $distance,
179
+ 'distance' => '100m',
176
- 'prev' => $prev,
180
+ 'prev' => '',
177
- 'next' => $next);
181
+ 'next' => ''
178
-
182
+ ];
183
+ $db['db']['station'][] = [
184
+ 'name' => '神戸三宮',
185
+ 'prefecture' => '兵庫県',
186
+ 'line' => '阪神',
187
+ 'x' => 135.1952558,
188
+ 'y' => 34.6945454,
189
+ 'postal' => '6770039',
190
+ 'distance' => '100m',
191
+ 'prev' => '',
192
+ 'next' => ''
193
+ ];
194
+ //以下駅の数だけ続く
179
195
  ```
180
196
 
181
-
182
- 全体はこんな感じ
197
+ $arrに適用する場合の全体はこんな感じ
183
198
  *各ifは条件を満たすのがめんどくさかったので条件を変更しています。
184
199
 
185
200
 
@@ -274,4 +289,21 @@
274
289
  }
275
290
 
276
291
  print json_encode($arr, JSON_PRETTY_PRINT);
292
+ ```
293
+
294
+ ポイントはこの辺
295
+
296
+ ```PHP
297
+
298
+ $arr['response']['station'][] = array(
299
+ 'name' => $name,
300
+ 'prefecture' => $prefecture,
301
+ 'line' => $line,
302
+ 'x' => $longitude,
303
+ 'y' => $latitude,
304
+ 'postal' => $postal,
305
+ 'distance' => $distance,
306
+ 'prev' => $prev,
307
+ 'next' => $next);
308
+
277
309
  ```