2016-11-17 5 views
0

私は現在、同社のAPIからのJSONレスポンスを取得しています。このようにPHPの配列に変換:多次元配列をループする方法は?

$api_url = file_get_contents('http://example.com'); 
$api_details = json_decode($api_url, true); 

私は$api_detailsvar_dumpを実行すると、私はこれを取得しています:

array(2) { 
    ["metadata"]=> 
    array(5) { 
    ["iserror"]=> 
    string(5) "false" 
    ["responsetime"]=> 
    string(5) "0.00s" 
    ["start"]=> 
    int(1) 
    ["count"]=> 
    int(99999) 
    } 
    ["results"]=> 
    array(3) { 
    ["first"]=> 
    int(1) 
    ["result"]=> 
    array(2) { 
     [0]=> 
     array(4) { 
     ["total_visitors"]=> 
     string(4) "3346" 
     ["visitors"]=> 
     string(4) "3249" 
     ["rpm"]=> 
     string(4) "0.07" 
     ["revenue"]=> 
     string(6) "0.2381" 
     } 
     [1]=> 
     array(4) { 
     ["total_visitors"]=> 
     string(6) "861809" 
     ["visitors"]=> 
     string(6) "470581" 
     ["rpm"]=> 
     string(4) "0.02" 
     ["revenue"]=> 
     string(7) "13.8072" 
     } 
    } 
    } 
} 

私は2つのことをしようとしており、多次元配列でどちらを行うかを理解することはできません。

  1. 私はmetadata > iserrorfalseであるかどうかを確認する必要があります。偽でない場合は、エラーメッセージを表示し、スクリプトを続行しません。

  2. それはfalseであれば、私はそれらのそれぞれのためにresults > resulttotal_visitorsをエコー、visitors、などの結果をループしたいと考えています。私は配列からデータをエコーする方法を知って

、私は配列への複数のレベルがあるとき、私はちょうど混乱しそうだと思います。正しい方向に私を指すことができ

誰もがはるかに高く評価されるだろう:)

答えて

1

をあなたはforeachを使って、配列を反復処理することができます。あなたはここでそれをよく読んですることができますhttp://php.net/manual/en/control-structures.foreach.php

あなたが連想配列を使用しているので、あなたのコードは次のようになります:

if ($arr['metadata']['iserror']) { 
    // Display error here 
} else { 
    foreach($arr['results']['result'] as $result) { 
    echo $result['total_visitors']; 
    echo $result['visitors']; 
    } 
} 

あなたは「正確に何を合わせてコードを微調整する必要がありますやり直していますが、これはあなたをラインで乗り越えるはずです。

希望に役立ちます!