2016-05-24 4 views
-1

複数のJSONファイルのデータをarrayで表示しようとしています。配列内の最後のJSONファイルのデータのみが表示されます

以下のコードを使用すると、配列内の最後のファイルのデータのみが表示されます。アレイ内のすべてのファイルのデータが表示されるようにするにはどうすればよいですか?

JSONファイルの順序を変更しても、配列内の最後のファイルのデータだけが表示されます。

配列:

$homepage = array(); 
$homepage[] = "http://linktojson.com/1/"; 
$homepage[] = "http://linktojson.com/2/"; 
$homepage[] = "http://linktojson.com/3/"; 
$homepage[] = "http://linktojson.com/4/"; 
$homepage[] = "http://linktojson.com/5/"; 

私は、配列内のファイルから内容を取得し、それをデコード:

foreach ($homepage as $homepage2) { 
    $data = json_decode(file_get_contents($homepage2, false)); 
} 

そして最後に値IDの各ファイルから配列でありますエコー:

foreach ($data->Content->Catalog as $each) { 
    echo $each->ID; 
} 
+0

@TheCodesee、リンクは有効なjsonデータですか? –

答えて

0

あなたはあなたの最初のforeachループの各反復で$dataを上書きしています。最初のループ内で2番目のループを移動すると、各ファイルのIDが表示されます。

foreach ($homepage as $homepage2) { 
    $data = json_decode(file_get_contents($homepage2, false)); 
    foreach($data->Content->Catalog as $each){ 
     echo $each->ID; 
    } 
} 
+0

ありがとう、私は今、ばかげている気がします。もし単にforeach文を入れ子にしてしまうのであれば、 –

+0

これで助けてもらえますか、私は別のスレッドを見ていて、 IDの値を高い順に並べることができました。それは完全に行いますが、配列が異なると、順序が再び始まります(私が意味するものを得た場合)。ここに例があります:https://3v4l.org/DXG85 - 配列全体が最高から最低までどのように変更されますか? –

+0

PHPのバージョンは何ですか? –

0

$dataをeaで上書きしていますあなたのforeachループの繰り返しです。最後の反復だけを覚えています。

あなたはあなたの最初のforeachループ内でご$data評価コードを置くことになるでしょう:

foreach ($homepage as $homepage2) { 
    $data = json_decode(file_get_contents($homepage2, false)); 
    foreach($data->Content->Catalog as $each){ 
     echo $each->ID; 
    } 
} 
関連する問題