2011-10-25 14 views
0

私はAPIにクエリを実行しましたが、返されたコード(JSON)を表示するにはいくつかの問題があります。私はのvar_dumpをすれば、私はこのようなものがあります:PHP JSONと配列

var_dump($street['location']); 
echo '->latitude:' . $location['latitude'] . '<br/>'; 
foreach($location['street'] as $st){ 
    echo '-->street id:' . $st['id'] . '<br/>'; 
    echo '-->street name:' . $st['name'] . '<br/>'; 
} 
echo '->Longitude:' . $location['longitude'] . '<br/>'; 

をしかし、私は得る:

array(3) { 
    ["latitude"]=> string(10) "52.6397278" 
    ["street"]=> array(2) { 
     ["id"]=> int(469) 
     ["name"]=> string(23) "On or near Abbey Street" 
    } 
    ["longitude"]=> string(10) "-1.1322920" 
} ->latitude:5 

Warning: Invalid argument supplied for foreach() in /home/pasd529/public_html/npia.php on line 102 
->Longitude:5 

var_dump($street['location']); 

array(3) { 
    ["latitude"]=> string(10) "52.6397278" 
    ["street"]=> array(2) { 
     ["id"]=> int(469) 
     ["name"]=> string(23) "On or near Abbey Street" 
    } 
    ["longitude"]=> string(10) "-1.1322920" 
} 

を、通常、私はそれが表示され持っているそのようなことを行います

緯度/経度が切り詰められているため、ID /名前がわかりません。

ありがとうございました

答えて

1

これは、通りの問題を解決する必要があります。


あなたは$street['location']['street']に格納された配列のためforeachを使用する場合:

// ... 
foreach($street['location']['street'] as $key => $value){ 
    echo '-->street ', $key, ': ', $value, '<br />'; 
} 
// ... 

(あなただけecho何かしたいとちょうどできたときに.を使用して連結する必要がないことに注意してください,を使用してください)。

+0

ありがとうございました。正常に動作します。私はいつforeachをする必要があるかどうかを知っていますか? – Olivier

+0

@middus:これはデバッグコードです:( –

+0

@Gianps申し訳ありませんが、私にあなたに教えていることを理解していません。 – middus

1

あなたは1つの値($street['location'])ですが、$location['street']にforeachループしています)をダンプしています。あなたのforeach値が逆転している可能性が最も高いです。

のvar_dumpが信頼される場合、あなたもforeachループを必要としません:

echo '->latitude:' . $location['latitude'] . '<br/>'; 
echo '-->street id:' . $location['street']['id'] . '<br/>'; 
echo '-->street name:' . $location['street']['name'] . '<br/>'; 
1

$location['street'] ...どこでそれを割り当てたのですか? $street['street']はありませんか?あなたはオフェルに通りの情報にアクセスするための配列を反復処理する必要はありません

$street['location'] = // array - it's not really clear in your code. 
echo '->latitude:' . $street['location']['latitude'] . '<br/>'; 
echo '-->street id:' . $street['location']['street']['id'] . '<br/>'; 
echo '-->street name:' . $street['location']['street']['name'] . '<br/>'; 
echo '->Longitude:' . $street['location']['longitude'] . '<br/>';