2

次のデータを含む URL に json フィードがあります。

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
[{"ID":1123,"OrderNumber":"1394","ProjectType":"Postcard","Template":"WtlossStudy solo","TemplateURL":"someone.biz/Home/ShowTemplate/283","ShipDate":"2/28/2015","InHomeDate":"3/2/2015","Quantity":"10,000","Price":"$3,000","CallTracking":"0"},{"ID":1123,"OrderNumber":"1413","ProjectType":"Postcard","Template":"WtlossStudy solo","TemplateURL":"","ShipDate":"3/30/2015","InHomeDate":"3/31/2015","Quantity":"5,000","Price":"$1,500","CallTracking":"0"},{"ID":1123,"OrderNumber":"1413","ProjectType":"Postcard","Template":"WtlossStudy solo","TemplateURL":"","ShipDate":"4/13/2015","InHomeDate":"4/14/2015","Quantity":"5,000","Price":"$1,500","CallTracking":"0"}]
</string>

私はそれを取得し、完全なphpを解析する必要があります。しかし、次のコードで無効な foreach エラーが発生しています。正しく表示する方法を教えてください。

$json = file_get_contents('http://someurl.biz/api/api/1123');

$obj = json_decode($json, true);

foreach($obj as $ob) {
    echo $ob->ID;
}   
4

4 に答える 4

4

としてみてください

$json = file_get_contents('http://superiorpostcards.biz/api/api/1123');
$obj = json_decode($json, true);
$array = json_decode($obj, true);
foreach($array as $value){
    echo $value['ID'];
}
于 2015-07-31T13:24:09.433 に答える
1

これは機能します。

JSON が連想配列になっているため、foreach を 2 つ作成する必要があります。

  • 上の foreach は、「[object1, object2, object3]」の 3 つの「オブジェクト」を解析します
  • 下部の foreach は、各「オブジェクト」コンテンツを解析します

    $data = json_decode('[{"ID":1123,"OrderNumber":"1394","ProjectType":"Postcard","Template":"WtlossStudy solo","TemplateURL":"someone.biz/Home/ShowTemplate/283","ShipDate":"2/28/2015","InHomeDate":"3/2/2015","Quantity":"10,000","Price":"$3,000","CallTracking":"0"},{"ID":1123,"OrderNumber":"1413","ProjectType":"Postcard","Template":"WtlossStudy solo","TemplateURL":"","ShipDate":"3/30/2015","InHomeDate":"3/31/2015","Quantity":"5,000","Price":"$1,500","CallTracking":"0"},{"ID":1123,"OrderNumber":"1413","ProjectType":"Postcard","Template":"WtlossStudy solo","TemplateURL":"","ShipDate":"4/13/2015","InHomeDate":"4/14/2015","Quantity":"5,000","Price":"$1,500","CallTracking":"0"}]');
    
     foreach($data as $obj) {
         foreach($obj as $key=>$val) {
            echo $key."->".$val." | ";
         }
     }   
    

はい、JSの方が簡単です。しかしphpの「json」はJSオブジェクトではなく、連想配列の配列です。

于 2015-07-31T13:25:21.767 に答える
0
$my_array_for_parsing = json_decode(/** put the json here */);

これにより、JSON が php連想配列として提供されます。


$my_array_for_parsing = json_decode($json);
foreach ($my_array_for_parsing as $name => $value) {
    // This will loop three times:
    //     $name = a
    //     $name = b
    //     $name = c
    // ...with $value as the value of that property
}
于 2015-07-31T13:08:40.917 に答える
0

json_decodeの 2 番目のパラメーターが に設定されている場合truejsonオブジェクトではなく連想配列に変換されます。これを試して:

$obj = json_decode($json, false);

foreach($obj as $ob) {
    echo $ob->ID;
}   
于 2015-07-31T13:08:48.187 に答える