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

回答編集履歴

2

加筆修正

2019/09/21 02:49

投稿

退会済みユーザー
answer CHANGED
@@ -46,4 +46,7 @@
46
46
  print_r(json_encode($array, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE));
47
47
  ```
48
48
 
49
- > {"tour":[{"id":"4409103","hotel_name":"ホテルあいうえお"},{"id":"3975042","hotel_name":"ホテルかきくけこ"},{"id":"4410566","hotel_name":"ホテルさしすせそ"},{"id":"4409104","hotel_name":"ホテルたちつてと"}],"tournum":{"tourmaxcount":1111}}
49
+ > {"tour":[{"id":"4409103","hotel_name":"ホテルあいうえお"},{"id":"3975042","hotel_name":"ホテルかきくけこ"},{"id":"4410566","hotel_name":"ホテルさしすせそ"},{"id":"4409104","hotel_name":"ホテルたちつてと"}],"tournum":{"tourmaxcount":1111}}
50
+
51
+ json_encode()の第2引数の味付けはてきとーなので、ほしい結果になるようにアレンジすると良いかも。
52
+ [PHP: json_encode - Manual](https://www.php.net/manual/ja/function.json-encode.php)

1

サンプルコードを追加

2019/09/21 02:49

投稿

退会済みユーザー
answer CHANGED
@@ -5,4 +5,45 @@
5
5
  示されたphpコードではオブジェクトで受け取っているため、
6
6
  配列としての操作が意味をなしません。
7
7
 
8
- 第2引数にtrueを与えてみてください。
8
+ 第2引数にtrueを与えてみてください。
9
+
10
+ ```php
11
+ <?php
12
+
13
+ $hotels = [
14
+ "4409103" => "ホテルあいうえお",
15
+ "3975042" => "ホテルかきくけこ",
16
+ "4410566" => "ホテルさしすせそ",
17
+ "4409104" => "ホテルたちつてと",
18
+ ];
19
+ $json = <<<EOT
20
+ {
21
+ "tour": [
22
+ {
23
+ "id": "4409103"
24
+ },
25
+ {
26
+ "id": "3975042"
27
+ },
28
+ {
29
+ "id": "4410566"
30
+ },
31
+ {
32
+ "id": "4409104"
33
+ }
34
+ ],
35
+ "tournum": {
36
+ "tourmaxcount": 1111
37
+ }
38
+ }
39
+ EOT;
40
+ $array = json_decode($json, true);
41
+ for ($i = 0; $i < count($array['tour']); $i++) {
42
+ if (isset($hotels[$array['tour'][$i]['id']])) {
43
+ $array['tour'][$i]['hotel_name'] = $hotels[$array['tour'][$i]['id']];
44
+ }
45
+ }
46
+ print_r(json_encode($array, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE));
47
+ ```
48
+
49
+ > {"tour":[{"id":"4409103","hotel_name":"ホテルあいうえお"},{"id":"3975042","hotel_name":"ホテルかきくけこ"},{"id":"4410566","hotel_name":"ホテルさしすせそ"},{"id":"4409104","hotel_name":"ホテルたちつてと"}],"tournum":{"tourmaxcount":1111}}