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

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

ただいまの
回答率

90.49%

  • PHP

    20378questions

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

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

解決済

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 214

chapp

score 158

お世話になっております。
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
                )
        )
)

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • mts10806

    2018/07/21 18:11

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

    キャンセル

回答 4

checkベストアンサー

+3

<?php

ini_set('display_errors', true);
error_reporting(E_ALL);

$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"}]} ';
$object = json_decode($json);

foreach ($object->quotes as $arr) {
    echo $arr->high . PHP_EOL;
    echo $arr->open . PHP_EOL;
    echo $arr->bid . PHP_EOL;
    echo $arr->currencyPairCode . PHP_EOL;
    echo $arr->ask . PHP_EOL;
    echo $arr->low . PHP_EOL;
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/21 20:34

    Kosuke_Shibuyaさま

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

    キャンセル

  • 2018/07/21 21:17

    なるほど

    キャンセル

+3

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

たとえば

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

$result->quotes[3]->high

82.59

ってこと。

Could u understand?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/21 17:17

    あー、シフトじゃないのか。通貨ペア毎にとってるのか。

    キャンセル

  • 2018/07/21 17:19 編集

    なら、

    foreach($result->quates as $pair)
    {
    echo "{$pair->currencyPairCode} : high = {$pair->high}<br>\n";
    }

    これでわかるだろ。

    キャンセル

  • 2018/07/21 17:33

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

    キャンセル

  • 2018/07/21 20:31

    luckerさま

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

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/21 20:38

    KazuhiroHatanoさま

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

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/21 20:42

    yryuuさま

    ご親切なアドバイスをありがとうございました。これまで今回のような形式のデータを扱うことがなかったことが手伝い、基礎知識が疎かであることを自覚することができました。

    yryuu様がおっしゃられた体系的な感覚での感覚も、とてもありがたいです。

    今後、これを機に理解を深めていきたいと思います。ありがとうございました。

    キャンセル

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

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    20378questions

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