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

質問編集履歴

3

試してみたforeeachのよる繰り返し処理の追記

2020/07/01 02:49

投稿

takato.work
takato.work

スコア11

title CHANGED
File without changes
body CHANGED
@@ -165,7 +165,7 @@
165
165
 
166
166
  ### 試したこと
167
167
 
168
- ['Items']の後の整数が入っいている[]に$iを渡し、for文による繰り返し構文で$iに1〜20までの数字を渡したのですが、最初のURL移行は取得できませんでした。
168
+ ['Items']の後の整数が入っいている[]に$iを渡し、for文による繰り返し構文で$iに1〜20までの数字を渡したのですが、最初のURL以降は取得できませんでした。
169
169
  for文が機能していないのではと、「echo $i」も行いましたが、こちらは正常に1〜20を出力しました。
170
170
  ```PHP
171
171
  for($i=0; $i<20; $i++;) {
@@ -173,6 +173,25 @@
173
173
  echo $i;
174
174
  }
175
175
  ```
176
+ foreachによる繰り返し処理も試しましたが、うまくいきませんでした。試したコードは下記です。
177
+ ```PHP
178
+ foreach($arr['Items'] as $value){
179
+ print($key);
180
+ print($value);
181
+ }
182
+ ```
183
+ 結果
184
+ ArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArray
176
185
 
186
+
187
+ ```PHP
188
+ foreach($arr['Items'] as $key => $value){
189
+ print($key);
190
+ print($value);
191
+ }
192
+ ```
193
+ 結果
194
+ 0Array1Array2Array3Array4Array5Array6Array7Array8Array9Array10Array11Array12Array13Array..........
195
+
177
196
  ### その他やりたいこと
178
197
  もしできれば、affiliateURL以外の値も取得したいのでその方法と、上記のコードでは「print」で出力していますが、実際の環境では変数に置くなどして,htmlとcssで整形もしていきたいので、その方法まで教えていただけると幸いです。

2

楽天APIの公式ドキュメントを追加しました

2020/07/01 02:49

投稿

takato.work
takato.work

スコア11

title CHANGED
File without changes
body CHANGED
@@ -1,9 +1,11 @@
1
1
  ### 前提・実現したいこと
2
2
  楽天APIを使い、商品検索して帰ってきた値を取得したいのですが、PHPのjson_decodeで配列化したjsonデータからfor分などの繰り返し処理でデータを取りたいです。
3
3
 
4
- ### 発生している問題・エラーメッセージ
4
+ ### 発生している問題
5
5
  for文で値を取ろうとすると失敗する。エラーコードはなく、一つ目以降出力がされなかった。
6
6
 
7
+ ### 公式ドキュメント
8
+ https://webservice.rakuten.co.jp/api/ichibaitemsearch/#requestURL
7
9
 
8
10
  ### 該当のソースコード
9
11
 

1

実際に書いたfor文と出力された配列の一部を追記しました

2020/07/01 02:31

投稿

takato.work
takato.work

スコア11

title CHANGED
File without changes
body CHANGED
@@ -19,11 +19,158 @@
19
19
  print($arr['Items'][6]['Item']['affiliateUrl'].'<br><br>');
20
20
  print($arr['Items'][7]['Item']['affiliateUrl'].'<br><br>');
21
21
  ```
22
+ 下はvar_damp($arr)によって出力された配列です。
23
+ ```PHP
24
+ array(10) {
25
+ ["Items"]=>
26
+ array(30) {
27
+ [0]=>
28
+ array(1) {
29
+ ["Item"]=>
30
+ array(35) {
31
+ ["mediumImageUrls"]=>
32
+ array(3) {
33
+ [0]=>
34
+ array(1) {
35
+ ["imageUrl"]=>
36
+ string(100) "https://thumbnail.image.rakuten.co.jp/@0_mall/eikoshop11/cabinet/zg0982020/zg098-01n.jpg?_ex=128x128"
37
+ }
38
+ [1]=>
39
+ array(1) {
40
+ ["imageUrl"]=>
41
+ string(99) "https://thumbnail.image.rakuten.co.jp/@0_mall/eikoshop11/cabinet/zg0982020/zg098-02.jpg?_ex=128x128"
42
+ }
43
+ [2]=>
44
+ array(1) {
45
+ ["imageUrl"]=>
46
+ string(101) "https://thumbnail.image.rakuten.co.jp/@0_mall/eikoshop11/cabinet/zg0982020/zg098-03-1.jpg?_ex=128x128"
47
+ }
48
+ }
49
+ ["pointRate"]=>
50
+ int(1)
51
+ ["shopOfTheYearFlag"]=>
52
+ int(0)
53
+ ["affiliateRate"]=>
54
+ int(2)
55
+ ["shipOverseasFlag"]=>
56
+ int(0)
57
+ ["asurakuFlag"]=>
58
+ int(1)
59
+ ["endTime"]=>
60
+ string(0) ""
61
+ ["taxFlag"]=>
62
+ int(0)
63
+ ["startTime"]=>
64
+ string(0) ""
65
+ ["itemCaption"]=>
66
+ string(1915) "商品名 送料無料モバイルバッテリー大容量10000mAh iPhone&Android両方対応極薄軽量ケーブル内蔵型6色iPhone8 iPhoneX iPhone7 Plus アイフォン7 iPhone6 plus iPhone6 iPhone6s plus iPhone5 SE携帯充電器4台同時充電可能 特徴 バッテリー容量:10000mAh 出力電圧:DC5V/2.4A 入力電圧:DC5V/2A 重量:210g サイズ:135*70*128mm 適応機器:iPhone8 iPhoneX iPhone7 &nbsp; iPhone6/6S/plus&nbsp; iPad Andriod機種など 充電回数:3.5回 付属品ケーブル カラー カラー:6色(グレー、ゴールド、ホワイト、ピング、ブルー、ブラック) 生産国 中国 ●2019年4月1日Type-C内臓ケーブルを追加いたしました。エクスペリアType-Bに対応しておりません。 ご注意 ●商品の色見はご覧のパソコンの環境により、実物と多少異なって見える場合がございますのでご了承ください。 ●ご注文いただきました商品であっても品切れの場合がございますのでご了承ください。その場合はメールにておしらせいたします。 ●ポーチは色落ち可能性ございますので、ご使用の際はご注意ください。尚、サービスポーチついての色落ち等の対応はしておりません。モバイルバッテリー 10000mAh大容量 極薄軽量  6色 バッテリー容量:10000mAh 出力電圧:DC5V/2.4A 入力電圧:DC5V/2A 重量:210g カラー:6色(グレー、ゴールド、ホワイト、ピング、ブルー、ブラック) サイズ:135*70*128mm 適応機器:iPhone8 iPhoneX iPhone7 iPhone6/6S/plus iPhone5/SE ipad Andriod機種など 充電回数:3.5回 付属品:ケーブル ●2019年4月1日Type-C内臓ケーブルを追加いたしました。 同梱おすすめ 同梱おすすめ 1280円(税込/送料無料) 1,480円(税込/送料無料)"
67
+ ["catchcopy"]=>
68
+ string(93) "防災 ギフトiPhone&Android&Typec対応 2.4A 登山 キャンプ 外出 機内持ち込み"
69
+ ["tagIds"]=>
70
+ array(10) {
71
+ [0]=>
72
+ int(1000873)
73
+ [1]=>
74
+ int(1000876)
75
+ [2]=>
76
+ int(1000880)
77
+ [3]=>
78
+ int(1000881)
79
+ [4]=>
80
+ int(1000885)
81
+ [5]=>
82
+ int(1000886)
83
+ [6]=>
84
+ int(1002891)
85
+ [7]=>
86
+ int(1005126)
87
+ [8]=>
88
+ int(1016358)
89
+ [9]=>
90
+ int(1019017)
91
+ }
92
+ ["smallImageUrls"]=>
93
+ array(3) {
94
+ [0]=>
95
+ array(1) {
96
+ ["imageUrl"]=>
97
+ string(98) "https://thumbnail.image.rakuten.co.jp/@0_mall/eikoshop11/cabinet/zg0982020/zg098-01n.jpg?_ex=64x64"
98
+ }
99
+ [1]=>
100
+ array(1) {
101
+ ["imageUrl"]=>
102
+ string(97) "https://thumbnail.image.rakuten.co.jp/@0_mall/eikoshop11/cabinet/zg0982020/zg098-02.jpg?_ex=64x64"
103
+ }
104
+ [2]=>
105
+ array(1) {
106
+ ["imageUrl"]=>
107
+ string(99) "https://thumbnail.image.rakuten.co.jp/@0_mall/eikoshop11/cabinet/zg0982020/zg098-03-1.jpg?_ex=64x64"
108
+ }
109
+ }
110
+ ["asurakuClosingTime"]=>
111
+ string(5) "12:00"
112
+ ["imageFlag"]=>
113
+ int(1)
114
+ ["availability"]=>
115
+ int(1)
116
+ ["shopAffiliateUrl"]=>
117
+ string(167) "https://hb.afl.rakuten.co.jp/hgc.........."
118
+ ["itemCode"]=>
119
+ string(19) "eikoshop11:10000058"
120
+ ["postageFlag"]=>
121
+ int(0)
122
+ ["itemName"]=>
123
+ string(314) "【バッテリーポーチプレゼント中&3種類ケーブル内蔵】 モバイルバッテリー 大容量 Typec 充電器ケーブル内蔵型 極薄軽量10000mAhiPhone &Android&Type-Cすべて対応 プレゼントiPhone11 iPhonexs iPhonexsm iPhone8 iPhoneXiPhone7 Plus iPhone64台同時充電可能"
124
+ ["itemPrice"]=>
125
+ int(1380)
126
+ ["pointRateEndTime"]=>
127
+ string(0) ""
128
+ ["shopCode"]=>
129
+ string(10) "eikoshop11"
130
+ ["affiliateUrl"]=>
131
+ string(191) "https://hb.afl.rakuten.co.jp/hgc............"
132
+ ["giftFlag"]=>
133
+ int(0)
134
+ ["shopName"]=>
135
+ string(13) "エイコShop"
136
+ ["reviewCount"]=>
137
+ int(4969)
138
+ ["asurakuArea"]=>
139
+ string(385) "群馬県/埼玉県/千葉県/東京都/神奈川県/新潟県/富山県/石川県/福井県/山梨県/青森県/長野県/岐阜県/静岡県/愛知県/三重県/滋賀県/京都府/大阪府/兵庫県/奈良県/岩手県/和歌山県/鳥取県/島根県/岡山県/広島県/山口県/徳島県/香川県/愛媛県/高知県/宮城県/秋田県/山形県/福島県/茨城県/栃木県"
140
+ ["shopUrl"]=>
141
+ string(167) "https://hb.afl.rakuten.co.jp/hgc............"
142
+ ["creditCardFlag"]=>
143
+ int(1)
144
+ ["reviewAverage"]=>
145
+ float(4.22)
146
+ ["shipOverseasArea"]=>
147
+ string(0) ""
148
+ ["genreId"]=>
149
+ string(6) "564277"
150
+ ["pointRateStartTime"]=>
151
+ string(0) ""
152
+ ["itemUrl"]=>
153
+ string(191) "https://hb.afl.rakuten.co.jp/hgc..............."
154
+ }
155
+ }
156
+ [1]=>
157
+ array(1) {
158
+ ["Item"]=>
159
+ array(35) {
160
+ }
161
+ }.....
162
+ ```
22
163
 
23
164
  ### 試したこと
24
165
 
25
166
  ['Items']の後の整数が入っいている[]に$iを渡し、for文による繰り返し構文で$iに1〜20までの数字を渡したのですが、最初のURL移行は取得できませんでした。
26
167
  for文が機能していないのではと、「echo $i」も行いましたが、こちらは正常に1〜20を出力しました。
168
+ ```PHP
169
+ for($i=0; $i<20; $i++;) {
170
+ print($arr['Items'][$i]['Item']['affiliateUrl'].'<br><br>');
171
+ echo $i;
172
+ }
173
+ ```
27
174
 
28
175
  ### その他やりたいこと
29
176
  もしできれば、affiliateURL以外の値も取得したいのでその方法と、上記のコードでは「print」で出力していますが、実際の環境では変数に置くなどして,htmlとcssで整形もしていきたいので、その方法まで教えていただけると幸いです。