2016-07-06 3 views
0

내 json 데이터를 루프하려고 할 때마다 마지막 배열 만 표시되고 원하는 배열은 표시되지 않습니다.PHP를 사용하여 루프를 통해 json 데이터

I가 다음 JSON 데이터

다음
{"sunSpecPlantExtract": {"t":"2016-07-06T13:11:35", "plant":{ "id":"8eefcfdf5990e441f0fb6f3fad709e21", "v":"1", "locale":"en-US"}, "name":"White Rose Foods", "location>":{"line1":"380 Middlesex Ave", "city":"Carteret", "state":"NJ", "postal":"07008", "timezone":"-5.00" }, "sunSpecData":{"v":"1","periodStart":"2016-07-06T05:00:00","periodEnd=":"2016-07-06T12:15:00" ,"d":{ "man":"Shark","t":"2016-07-06T05:00:00", "m":{ "id":"6519", "sn":"0083574330" ,"WHL":"27400631402" ,"W":"-15500" ,"PPVphAB":"13286" ,"PPVphBC":"13220" ,"PPVphCA":"13253" ,"A":"0.761" ,"WH":"0" } } ,"d":{ "man":"Shark","t":"2016-07-06T05:15:00", "m":{ "id":"6519", "sn":"0083574330" ,"WHL":"27400631402" ,"W":"-15940" ,"PPVphAB":"13294" ,"PPVphBC":"13237" ,"PPVphCA":"13265" ,"A":"0.778" ,"WH":"0" } } ,"d":{ "man":"Shark","t":"2016-07-06T05:30:00", "m":{ "id":"6519", "sn":"0083574330" ,"WHL":"27400631402" ,"W":"-16114" ,"PPVphAB":"13290" ,"PPVphBC":"13244" ,"PPVphCA":"13267" ,"A":"0.789" ,"WH":"0" } } ,"d":{ "man":"Shark","t":"2016-07-06T05:45:00", "m":{ "id":"6519", "sn":"0083574330" ,"WHL":"27400631402" ,"W":"-416" ,"PPVphAB":"13240" ,"PPVphBC":"13183" ,"PPVphCA":"13212" ,"A":"0.74" ,"WH":"0" } } ,"d":{ "man":"SMAINVERTER","t":"2016-07-06T05:00:00", "m":{ "id":"6520", "sn":"6520" ,"DCV":"105" ,"W":"0" ,"DCA":"0" ,"WHL":"3685975455" ,"WH":"0" } } ,"d":{ "man":"SMAINVERTER","t":"2016-07-06T05:15:00", "m":{ "id":"6520", "sn":"6520" ,"DCV":"323" ,"W":"0" ,"DCA":"0" ,"WHL":"3685975455" ,"WH":"0" } } ,"d":{ "man":"SMAINVERTER","t":"2016-07-06T05:30:00", "m":{ "id":"6520", "sn":"6520" ,"DCV":"390" ,"W":"0" ,"DCA":"0" ,"WHL":"3685975455" ,"WH":"0" } } ,"d":{ "man":"SMAINVERTER","t":"2016-07-06T05:45:00", "m":{ "id":"6520", "sn":"6520" ,"DCV":"341" ,"W":"3800" ,"DCA":"12" ,"WHL":"3685975455" ,"WH":"0" } } ,"d":{ "man":"SMAINVERTER","t":"2016-07-06T06:00:00", "m":{ "id":"6520", "sn":"6520" ,"DCV":"355" ,"W":"11500" ,"DCA":"34" ,"WHL":"3685976155" ,"WH":"699" } } ,"d":{ "man":"SMAINVERTER","t":"2016-07-06T06:15:00", "m":{ "id":"6520", "sn":"6520" ,"DCV":"392" ,"W":"25800" ,"DCA":"68" ,"WHL":"3685980555" ,"WH":"4400" } } ,"d":{ "man":"SMAINVERTER","t":"2016-07-06T06:30:00", "m":{ "id":"6520", "sn":"6520" ,"DCV":"400" ,"W":"47400" ,"DCA":"122" ,"WHL":"3685989655" ,"WH":"9099" } } ,"d":{ "man":"SMAINVERTER","t":"2016-07-06T06:45:00", "m":{ "id":"6520", "sn":"6520" ,"DCV":"400" ,"W":"70800" ,"DCA":"183" ,"WHL":"3686004055" ,"WH":"14400" } } ,"d":{ "man":"SMAINVERTER","t":"2016-07-06T07:00:00", "m":{ "id":"6520", "sn":"6520" ,"DCV":"408" ,"W":"96800" ,"DCA":"245" ,"WHL":"3686025155" ,"WH":"21099" } } ,"d":{ "man":"SMAINVERTER","t":"2016-07-06T07:15:00", "m":{ "id":"6520", "sn":"6520" ,"DCV":"396" ,"W":"126900" ,"DCA":"331" ,"WHL":"3686053155" ,"WH":"28000" } } ,"d":{ "man":"SMAINVERTER","t":"2016-07-06T07:30:00", "m":{ "id":"6520", "sn":"6520" ,"DCV":"392" ,"W":"151100" ,"DCA":"398" ,"WHL":"3686088655" ,"WH":"35500" } } } } } } 

I JSON 데이터를 통해

$data = json_decode($json_data, true); 

지금이 루프 내 시도 JSON 데이터를 읽을 수있는 다음 코드가

foreach($data as $value){ 
    echo "Inverter: " . $value['sunSpecData']['d']['man'] . "<br>"; 
    echo "DateTime: " . $value['sunSpecData']['d']['t'] . "<br>"; 
    echo "W: " . $value['sunSpecData']['d']['m']['W'] . "<br><br>"; 
    } 

마지막 배열 만 가져옵니다.

Inverter: SMAINVERTER 
DateTime: 2016-07-06T07:30:00 
W: 151100 

마지막 배열 대신 모든 배열을 표시하고 싶습니다. 이와 같이 :

Inverter: Shark 
DateTime: 2016-07-06T05:00:00 
W: -15500 

Inverter: Shark 
DateTime: 2016-07-06T05:15:00 
W: -15940 

....and so on until the last one.... 

Inverter: SMAINVERTER 
DateTime: 2016-07-06T07:30:00 
W: 151100 

답변

0

반복 할 단 하나의 sunSpecData가 있습니다. 그 값 자체를 반복하려고합니다. 라인 라인 다음의 foreach()에 제공된 잘못된 인수 : 그것은 내게 다음 오류 제공

foreach($data['sunSpecPlantExtract']['sunSpecData'] as $k => $value){ // this will spit out each value 
    if($k == "d") { // to skip 'v', 'periodStart' and 'periodEnd' 
     echo "Inverter: " . $value['man'] . "<br>"; 
     echo "DateTime: " . $value['t'] . "<br>"; 
     echo "W: " . $value['m']['W'] . "<br><br>"; 
    } 
} 
+0

{($ K => $ 값으로 $ 데이터 [ 'sunSpecData']) 의 foreach를// 이것은 각 값을 뱉어 낼 것입니다. – fmora

+0

배열에 'sunSpecPlantExtract'를 추가했습니다. 지금 해봐. – aynber

+0

만약 내가 이렇게 추가한다면 : foreach ($ data [ 'sunSpecPlantExtract'] [ 'sunSpecData']를 $ k => $ value) {나는 아무것도 얻지 못할 것이다. 이 방법으로 foreach ($ data [ 'sunSpecPlantExtract'] [ 'sunSpecData']를 $ k => $ value로 추가하면 마지막 배열 만 얻을 수 있습니다. – fmora

관련 문제