2016-07-28 35 views
1

私は出荷APIを試していました。 APIはobjectを返します。しかし、単純なforeachループを使用して特定の値にアクセスしようとすると、意図したとおりに動作しません。私は別の方法を試みたが、すべてが空白のページを私に与える。PHPオブジェクトの値にアクセスできません

以下はAPIから受け取った応答です。

stdClass Object 
(
[ConsignmentTrackEvents_Details_NewResult] => stdClass Object 
    (
     [ConsignmentTrack] => Array 
      (
       [0] => stdClass Object 
        (
         [ERROR] => 
         [DOCKNO] => 888888 
         [TRANSIT_LOCATION] => Location, Location 
         [ACTIVITY] => Out For Delivery 
         [EVENTDATE] => 22 Jul 2016 
         [EVENTTIME] => 21:05:48 
         [NEXT_LOCATION] => Coimbatore 
         [TRACKING_CODE] => O 
        ) 

       [1] => stdClass Object 
        (
         [ERROR] => 
         [DOCKNO] => 888888 
         [TRANSIT_LOCATION] => Location, Location 
         [ACTIVITY] => Picked up and Booking processed 
         [EVENTDATE] => 06 Jun 2016 
         [EVENTTIME] => 16:40:39 
         [NEXT_LOCATION] => 
         [TRACKING_CODE] => B 
        ) 

      ) 

    ) 

) 

次に、値にアクセスするために次のループを使用しました。

foreach($result['ConsignmentTrackEvents_Details_NewResult'] ['ConsignmentTrack'] as $res){ 

echo $res['DOCKNO']; 

} 

ここで何か間違っていますか?

+2

これは*オブジェクト*ではなく*配列*です。配列表記ではなく、オブジェクト表記を使用します。 –

+1

次の 'foreach($ result-> ConsignmentTrackEvents_Details_NewResult-> ConsendmentTrack as $ res)'と 'echo $ res-> DOCKNO;' –

+0

@JohnCondeを変更しました。 – Rahul

答えて

2

配列とオブジェクトは、あなたがループその後、foreachループとの主なコレクションを通って、それに含まれるオブジェクトにドリルダウンでき$array['key']とあなたのアクセス配列エントリ、異なるものであり、$object->key

foreach($result->ConsignmentTrackEvents_Details_NewResult->ConsignmentTrack as $res){ 
    echo $res->DOCKNO; 
} 
+0

ヘルプと明確化のためにIanisさんにありがとうございました。私はプロジェクトの一環としてPHPを学んでいましたが、これまでのところ、このコードは私にそれを混乱させました。 – Rahul

0

とプロパティオブジェクトこれにはあなたが探しているデータが含まれています。

<?php 
    // $result HERE IS THE MAIN DATA... 
    foreach($result as $key=>$data){ 
     $trackResult = $result['ConsignmentTrackEvents_Details_NewResult']; 
     foreach($trackResult as $intKey=>$objData){ 
      $dockNo   = $objData->DOCKNO; 
      $transit  = $objData->TRANSIT_LOCATION; 
      $activity  = $objData->ACTIVITY; 
      $eventDate  = $objData->EVENTDATE; 
      $eventTime  = $objData->EVENTTIME; 
      $nextLocation = $objData->NEXT_LOCATION; 
      $trackingCode = $objData->TRACKING_CODE; 

      echo $dockNo; 

     } 

    } 
関連する問題