2017-06-13 10 views
1

私はStackoverflowの上に似たような質問があることを知っていますが、私が持っている問題のための助けは見つかりませんでした。それを介してJSONは入れ子になった配列をデコードしますPHPループ

[{ 
"name": "Name0", 
"services": [ 
    [{ 
     "Service": "Service00", 
     "Description": "Desc00" 
    }, { 
     "Service": "Service01", 
     "Description": "Desc01" 
    }] 
] 
}, { 
"name": "Name1", 
"services": [ 
    [{ 
     "Service": "Service10", 
     "Description": "Desc10" 
    }] 
] 
}] 

Iループ:

私はこのJSONを持っ

$quoteJson = json_decode($quoteJson); 

foreach($quoteJson as $mydata) { 
    echo $mydata->name . "<br>"; 
     foreach($mydata->services as $key => $value) 
      { 
       echo $value[$key]->Service . "<br>"; 
       echo $value[$key]->Description . "<br>"; 
      } 
} 

そして私が得る結果は次のとおりです。

Name0 
Service00 
Desc00 

Name1 
Service10 
Desc10 

私はをループすることはできませんよ取得するサービス要素:

Name0 
Service00 
Desc00 
Service01 
Desc01 

Name1 
Service10 
Desc10 

答えて

3

何らかの理由により、servicesは配列内の配列です。あなたのコードを少し変更メイド:

foreach($quoteJson as $mydata) {                         
    echo $mydata->name . "<br>";                           
    foreach($mydata->services[0] as $key => $value)                      
    {                                  
     echo $value->Service . "<br>";                          
     echo $value->Description . "<br>";                        
    }                              
} 

を今ではそれが返されます。

NAME0
Service00
Desc00
Service01
Desc01
名1
Service10
Desc10

+0

が魅力のように働きました!ありがとう!なぜ[0]インデックスが必要なのかわからないので、いくつかの再調査を行います。 – anexo

+0

現在、 'services'オブジェクトにはネストされた配列が含まれています。基本的には、「サービス」:[[]] '。 [0]を使用して、最初にアクセスし、到達しようとしているデータを含む 'services'の要素のみにアクセスします。 – Hollings

1

以来の$ mydata->サービスは多次元配列であるため、$値変数。

$quoteJson = json_decode($quoteJson); 

foreach($quoteJson as $mydata) { 
    echo $mydata->name . "\n"; 

     foreach($mydata->services as $key => $value) 
      { 
       foreach($value as $k=>$v){ // loop the array 
        echo $v->Service . "\n"; 
        echo $v->Description . "\n"; 
       } 
      } 
} 
1

内部ループが見逃されているため、期待通りの出力が得られません。 以下のコードは正常に動作します。

foreach($quoteJson as $mydata) { 
echo $mydata->name . "<br>"; 
    foreach($mydata->services as $key => $value) 
    { 
     foreach($value as $innerdata){ 
      echo $innerdata->Service . "<br>"; 
      echo $innerdata->Description . "<br>"; 
     } 
    }  

}

関連する問題