質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

194閲覧

配列データ?Jsonデータ?の検索

chapp

総合スコア233

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/07/21 08:08

お世話になっております。
phpにて外国為替情報を取得したく、file_get_contents()を用い、以下のようなデータが取得出来ています。

{"quotes":[{"high":"1.9235","open":"1.9235","bid":"1.9235","currencyPairCode":"GBPNZD","ask":"1.9336","low":"1.9235"},{"high":"84.73","open":"84.73","bid":"84.73","currencyPairCode":"CADJPY","ask":"84.85","low":"84.73"},{"high":"1.7676","open":"1.7676","bid":"1.7676","currencyPairCode":"GBPAUD","ask":"1.7730","low":"1.7676"},{"high":"82.59","open":"82.59","bid":"82.59","currencyPairCode":"AUDJPY","ask":"82.81","low":"82.59"},{"high":"1.0869","open":"1.0869","bid":"1.0869","currencyPairCode":"AUDNZD","ask":"1.0913","low":"1.0869"},{"high":"1.5395","open":"1.5395","bid":"1.5395","currencyPairCode":"EURCAD","ask":"1.5427","low":"1.5395"},{"high":"1.1720","open":"1.1720","bid":"1.1720","currencyPairCode":"EURUSD","ask":"1.1729","low":"1.1720"},{"high":"75.77","open":"75.77","bid":"75.77","currencyPairCode":"NZDJPY","ask":"76.00","low":"75.77"},{"high":"1.3133","open":"1.3133","bid":"1.3133","currencyPairCode":"USDCAD","ask":"1.3153","low":"1.3133"},{"high":"0.8917","open":"0.8917","bid":"0.8917","currencyPairCode":"EURGBP","ask":"0.8932","low":"0.8917"},{"high":"1.3125","open":"1.3125","bid":"1.3125","currencyPairCode":"GBPUSD","ask":"1.3148","low":"1.3125"},{"high":"8.241","open":"8.241","bid":"8.241","currencyPairCode":"ZARJPY","ask":"8.391","low":"8.241"},{"high":"1.1625","open":"1.1625","bid":"1.1625","currencyPairCode":"EURCHF","ask":"1.1649","low":"1.1625"},{"high":"112.11","open":"112.11","bid":"112.11","currencyPairCode":"CHFJPY","ask":"112.37","low":"112.11"},{"high":"0.7414","open":"0.7414","bid":"0.7414","currencyPairCode":"AUDUSD","ask":"0.7432","low":"0.7414"},{"high":"0.9916","open":"0.9916","bid":"0.9916","currencyPairCode":"USDCHF","ask":"0.9936","low":"0.9916"},{"high":"130.57","open":"130.57","bid":"130.57","currencyPairCode":"EURJPY","ask":"130.73","low":"130.57"},{"high":"1.3015","open":"1.3015","bid":"1.3015","currencyPairCode":"GBPCHF","ask":"1.3063","low":"1.3015"},{"high":"1.7178","open":"1.7178","bid":"1.7178","currencyPairCode":"EURNZD","ask":"1.7249","low":"1.7178"},{"high":"0.6801","open":"0.6801","bid":"0.6801","currencyPairCode":"NZDUSD","ask":"0.6821","low":"0.6801"},{"high":"111.39","open":"111.39","bid":"111.39","currencyPairCode":"USDJPY","ask":"111.46","low":"111.39"}]}

このデータからUSDJPYのhigh、open、bid、ask、lowそれぞれの値を取得したいと考えていますが、その取得方法が分かりません。

json_decode()を使うことで以下のようなデータ形式に整えるまで至ったのですが適切な取得(検索)が出来ずにいる次第です。

stdClass Object ( [quotes] => Array ( [0] => stdClass Object ( [high] => 1.9235 [open] => 1.9235 [bid] => 1.9235 [currencyPairCode] => GBPNZD [ask] => 1.9336 [low] => 1.9235 ) [1] => stdClass Object ( [high] => 84.73 [open] => 84.73 [bid] => 84.73 [currencyPairCode] => CADJPY [ask] => 84.85 [low] => 84.73 ) [2] => stdClass Object ( [high] => 1.7676 [open] => 1.7676 [bid] => 1.7676 [currencyPairCode] => GBPAUD [ask] => 1.7730 [low] => 1.7676 ) [3] => stdClass Object ( [high] => 82.59 [open] => 82.59 [bid] => 82.59 [currencyPairCode] => AUDJPY [ask] => 82.81 [low] => 82.59 ) [4] => stdClass Object ( [high] => 1.0869 [open] => 1.0869 [bid] => 1.0869 [currencyPairCode] => AUDNZD [ask] => 1.0913 [low] => 1.0869 ) [5] => stdClass Object ( [high] => 1.5395 [open] => 1.5395 [bid] => 1.5395 [currencyPairCode] => EURCAD [ask] => 1.5427 [low] => 1.5395 ) [6] => stdClass Object ( [high] => 1.1720 [open] => 1.1720 [bid] => 1.1720 [currencyPairCode] => EURUSD [ask] => 1.1729 [low] => 1.1720 ) [7] => stdClass Object ( [high] => 75.77 [open] => 75.77 [bid] => 75.77 [currencyPairCode] => NZDJPY [ask] => 76.00 [low] => 75.77 ) [8] => stdClass Object ( [high] => 1.3133 [open] => 1.3133 [bid] => 1.3133 [currencyPairCode] => USDCAD [ask] => 1.3153 [low] => 1.3133 ) [9] => stdClass Object ( [high] => 0.8917 [open] => 0.8917 [bid] => 0.8917 [currencyPairCode] => EURGBP [ask] => 0.8932 [low] => 0.8917 ) [10] => stdClass Object ( [high] => 1.3125 [open] => 1.3125 [bid] => 1.3125 [currencyPairCode] => GBPUSD [ask] => 1.3148 [low] => 1.3125 ) [11] => stdClass Object ( [high] => 8.241 [open] => 8.241 [bid] => 8.241 [currencyPairCode] => ZARJPY [ask] => 8.391 [low] => 8.241 ) [12] => stdClass Object ( [high] => 1.1625 [open] => 1.1625 [bid] => 1.1625 [currencyPairCode] => EURCHF [ask] => 1.1649 [low] => 1.1625 ) [13] => stdClass Object ( [high] => 112.11 [open] => 112.11 [bid] => 112.11 [currencyPairCode] => CHFJPY [ask] => 112.37 [low] => 112.11 ) [14] => stdClass Object ( [high] => 0.7414 [open] => 0.7414 [bid] => 0.7414 [currencyPairCode] => AUDUSD [ask] => 0.7432 [low] => 0.7414 ) [15] => stdClass Object ( [high] => 0.9916 [open] => 0.9916 [bid] => 0.9916 [currencyPairCode] => USDCHF [ask] => 0.9936 [low] => 0.9916 ) [16] => stdClass Object ( [high] => 130.57 [open] => 130.57 [bid] => 130.57 [currencyPairCode] => EURJPY [ask] => 130.73 [low] => 130.57 ) [17] => stdClass Object ( [high] => 1.3015 [open] => 1.3015 [bid] => 1.3015 [currencyPairCode] => GBPCHF [ask] => 1.3063 [low] => 1.3015 ) [18] => stdClass Object ( [high] => 1.7178 [open] => 1.7178 [bid] => 1.7178 [currencyPairCode] => EURNZD [ask] => 1.7249 [low] => 1.7178 ) [19] => stdClass Object ( [high] => 0.6801 [open] => 0.6801 [bid] => 0.6801 [currencyPairCode] => NZDUSD [ask] => 0.6821 [low] => 0.6801 ) [20] => stdClass Object ( [high] => 111.39 [open] => 111.39 [bid] => 111.39 [currencyPairCode] => USDJPY [ask] => 111.46 [low] => 111.39 ) ) )

お忙しい中恐縮ですが、アドバイスのほど頂戴出来れば幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/07/21 09:11

「stdClass Object」って型が出ているので幾らでも調べようがあると思いますが。
guest

回答4

0

ベストアンサー

php

1<?php 2 3ini_set('display_errors', true); 4error_reporting(E_ALL); 5 6$json = '{"quotes":[{"high":"1.9235","open":"1.9235","bid":"1.9235","currencyPairCode":"GBPNZD","ask":"1.9336","low":"1.9235"},{"high":"84.73","open":"84.73","bid":"84.73","currencyPairCode":"CADJPY","ask":"84.85","low":"84.73"},{"high":"1.7676","open":"1.7676","bid":"1.7676","currencyPairCode":"GBPAUD","ask":"1.7730","low":"1.7676"},{"high":"82.59","open":"82.59","bid":"82.59","currencyPairCode":"AUDJPY","ask":"82.81","low":"82.59"},{"high":"1.0869","open":"1.0869","bid":"1.0869","currencyPairCode":"AUDNZD","ask":"1.0913","low":"1.0869"},{"high":"1.5395","open":"1.5395","bid":"1.5395","currencyPairCode":"EURCAD","ask":"1.5427","low":"1.5395"},{"high":"1.1720","open":"1.1720","bid":"1.1720","currencyPairCode":"EURUSD","ask":"1.1729","low":"1.1720"},{"high":"75.77","open":"75.77","bid":"75.77","currencyPairCode":"NZDJPY","ask":"76.00","low":"75.77"},{"high":"1.3133","open":"1.3133","bid":"1.3133","currencyPairCode":"USDCAD","ask":"1.3153","low":"1.3133"},{"high":"0.8917","open":"0.8917","bid":"0.8917","currencyPairCode":"EURGBP","ask":"0.8932","low":"0.8917"},{"high":"1.3125","open":"1.3125","bid":"1.3125","currencyPairCode":"GBPUSD","ask":"1.3148","low":"1.3125"},{"high":"8.241","open":"8.241","bid":"8.241","currencyPairCode":"ZARJPY","ask":"8.391","low":"8.241"},{"high":"1.1625","open":"1.1625","bid":"1.1625","currencyPairCode":"EURCHF","ask":"1.1649","low":"1.1625"},{"high":"112.11","open":"112.11","bid":"112.11","currencyPairCode":"CHFJPY","ask":"112.37","low":"112.11"},{"high":"0.7414","open":"0.7414","bid":"0.7414","currencyPairCode":"AUDUSD","ask":"0.7432","low":"0.7414"},{"high":"0.9916","open":"0.9916","bid":"0.9916","currencyPairCode":"USDCHF","ask":"0.9936","low":"0.9916"},{"high":"130.57","open":"130.57","bid":"130.57","currencyPairCode":"EURJPY","ask":"130.73","low":"130.57"},{"high":"1.3015","open":"1.3015","bid":"1.3015","currencyPairCode":"GBPCHF","ask":"1.3063","low":"1.3015"},{"high":"1.7178","open":"1.7178","bid":"1.7178","currencyPairCode":"EURNZD","ask":"1.7249","low":"1.7178"},{"high":"0.6801","open":"0.6801","bid":"0.6801","currencyPairCode":"NZDUSD","ask":"0.6821","low":"0.6801"},{"high":"111.39","open":"111.39","bid":"111.39","currencyPairCode":"USDJPY","ask":"111.46","low":"111.39"}]} '; 7$object = json_decode($json); 8 9foreach ($object->quotes as $arr) { 10 echo $arr->high . PHP_EOL; 11 echo $arr->open . PHP_EOL; 12 echo $arr->bid . PHP_EOL; 13 echo $arr->currencyPairCode . PHP_EOL; 14 echo $arr->ask . PHP_EOL; 15 echo $arr->low . PHP_EOL; 16}

投稿2018/07/21 08:18

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chapp

2018/07/21 11:34

Kosuke_Shibuyaさま ご親切なアドバイスをありがとうございます。サンプルソースまで張り付けて頂き、無事解決することが出来ました。 この度、基礎知識がないゆえにの丸投げのような質問になってしまいましたが、他の皆様からのアドバイスを機に、もっと理解を深めていければと思います。ありがとうございました。
Nippun

2018/07/21 12:17

なるほど
guest

0

おれ、基礎知識学ばずに金儲けするやつ嫌いなんだけどさ、PHPのよしみで教えてやると、

たとえば

上記の内容が$resultだとしてシフト3の足のhighが欲しかったら

$result->quotes[3]->high

82.59

ってこと。

Could u understand?

投稿2018/07/21 08:15

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/07/21 08:17

あー、シフトじゃないのか。通貨ペア毎にとってるのか。
退会済みユーザー

退会済みユーザー

2018/07/21 08:21 編集

なら、 foreach($result->quates as $pair) { echo "{$pair->currencyPairCode} : high = {$pair->high}<br>\n"; } これでわかるだろ。
terminator

2018/07/21 08:33

> 基礎知識学ばずに金儲けするやつ嫌い 同意w 更に言えば、その知識を安易にタダで手に入れようとする根性も嫌い。
chapp

2018/07/21 11:31

luckerさま ご親切なアドバイスをありがとうござます。株取引やFXなど目的としたものではなく、現在の日本の価格をドルベースに変換するため、為替レートを取得したかったわけですが、基礎知識不足がない者への対応、感謝いたします、ありがとうございました。
guest

0

体系的に覚えるなら
stdClassは->でアクセスできて
Arrayは[]でアクセスできるって覚えるといいかとおもいます

投稿2018/07/21 10:38

yryuu

総合スコア151

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chapp

2018/07/21 11:42

yryuuさま ご親切なアドバイスをありがとうございました。これまで今回のような形式のデータを扱うことがなかったことが手伝い、基礎知識が疎かであることを自覚することができました。 yryuu様がおっしゃられた体系的な感覚での感覚も、とてもありがたいです。 今後、これを機に理解を深めていきたいと思います。ありがとうございました。
guest

0

この手の2次元配列はarray_columnで第3引数を"currencyPairCode"にしてあれこれする感じですかね
オブジェクトのプロパティも取り出せるようになったのはPHP7からだからそこは注意

投稿2018/07/21 09:35

KazuhiroHatano

総合スコア7802

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chapp

2018/07/21 11:38

KazuhiroHatanoさま ご親切なアドバイスをありがとうございました。この度の質問、基礎知識がないため丸投げのような内容になってしまいました。これまであまり今回のような形式のデータを触ることがなかったため、疎かになっていましたが、KazuhiroHatanoさまからのヒントを含め、これから理解を深めていきたいと思います。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問