0

デコードしようとしているJSONがいくつかあります。値を正しく抽出していますが、エラーも生成しています。

これがvar_dump

["success"]=>
bool(true)
["providers"]=>
array(2) {
[0]=>
object(stdClass)#5 (15) {
  ["address1"]=>
  string(14) "3240 W Lake St"
  ["address2"]=>
  NULL
  ["city"]=>
  string(11) "Minneapolis"
  ["crossStreet"]=>
  string(26) "Lake Street & Market Plaza"
  ["description"]=>
  string(55) "test location28402 description of services/prices/hours"
  ["distance"]=>
  float(0.42900015862223)
  ["lat"]=>
  float(44.948469)
  ["lon"]=>
  float(-93.321155)
  ["name"]=>
  string(17) "testlocation28402"
  ["phone"]=>
  string(10) "6125551212"
  ["precise"]=>
  bool(true)
  ["state"]=>
  string(2) "MN"
  ["url"]=>
  string(41) "http://www.testlocation28402.com?id=28402"
  ["urlCaption"]=>
  string(25) "www.testlocation28402.com"
  ["zip"]=>
  string(9) "554164512"
}
[1]=>
object(stdClass)#6 (15) {
  ["address1"]=>
  string(19) "4335 Excelsior Blvd"
  ["address2"]=>
  NULL
  ["city"]=>
  string(16) "Saint Louis Park"
  ["crossStreet"]=>
  NULL
  ["description"]=>
  string(55) "test location26358 description of services/prices/hours"
  ["distance"]=>
  float(0.91979730006713)
  ["lat"]=>
  float(44.935773)
  ["lon"]=>
  float(-93.33489)
  ["name"]=>
  string(17) "testlocation26358"
  ["phone"]=>
  string(10) "6125551212"
  ["precise"]=>
  bool(true)
  ["state"]=>
  string(2) "MN"
  ["url"]=>
  string(41) "http://www.testlocation26358.com?id=26358"
  ["urlCaption"]=>
  string(25) "www.testlocation26358.com"
  ["zip"]=>
  string(9) "554164811"
}
  } 
["errors"]=>array(0) {
}
}

上記はvar_dump変数$jsonのです。次のコマンドでCITYフィールドを抽出しようとしています。

$json = json_decode($surescript);

foreach ($json as $providers){
foreach($providers as $onespot) {
echo "*";
echo $onespot->city;
echo "\n";
}
}

これは以下を出力します:


警告: 153行目の/home/content/96/7973196/html/channels/MIL432/storeFinder_2.phpのforeach()に無効な引数が指定されています *ミネアポリス*セントルイスパーク

したがって、正しいネストされた変数を取得しているだけでなく、2番目のforeachループでエラーをスローしています。

私は間違って何をしていますか?

よろしくお願いします。

4

1 に答える 1

1

success外側のループで JSON のすべてを反復処理しています。つまり、セクション、セクション、およびセクションprovidersを解析しようとしていerrorsます。

を解析しようとするとsuccess、内側のループの内容を反復処理できないため、エラーが発生します。セクションは配列であるため、それを反復処理できます。そのerrors中には何もないため、アクセスしようとしてもエラー/警告cityはありませんが、そこには存在しません。

プロバイダーのみを解析するには:

$json = json_decode($surescript);

foreach ($json->providers as $provider){
    echo "*";
    echo $provider->city;
    echo "\n";
}
于 2012-10-09T00:07:39.123 に答える