2012-05-18 2 views
0

Я пытаюсь интегрировать API-интерфейс доставки с моим приложением. Я отправляю свои данные клиенту SOAP, и я возвращаю массив объектов в ответ, который я не могу проанализировать. Ниже приведен массив. Пожалуйста, помогите мне разобрать это:Невозможно проанализировать массив объектов ответа в PHP

object(stdClass)#29 (4) { 
    ["Transaction"]=> 
    object(stdClass)#30 (5) { 
     ["Reference1"]=> 
     string(0) "" 
     ["Reference2"]=> 
     string(0) "" 
     ["Reference3"]=> 
     string(0) "" 
     ["Reference4"]=> 
     string(0) "" 
     ["Reference5"]=> 
     string(0) "" 
    } 
    ["Notifications"]=> 
    object(stdClass)#31 (0) { 
    } 
    ["HasErrors"]=> 
    bool(false) 
    ["Shipments"]=> 
    object(stdClass)#32 (1) { 
     ["ProcessedShipment"]=> 
     object(stdClass)#33 (8) { 
      ["ID"]=> 
      string(10) "42939401" 
      ["Reference1"]=> 
      string(9) "100000002" 
      ["Reference2"]=> 
      string(0) "" 
      ["Reference3"]=> 
      string(0) "" 
      ["ForeignHAWB"]=> 
      string(0) "" 
      ["HasErrors"]=> 
      bool(false) 
      ["Notifications"]=> 
      object(stdClass)#34 (0) { 
      } 
      ["ShipmentLabel"]=> 
       object(stdClass)#35 (2) { 
       ["LabelURL"]=> 
       string(76) "http://content/rpt_cache/9c0d152bbcdc4e739132d2dsda5506.pdf" 
       ["LabelFileContents"]=> 
       NULL 
      } 
     } 
    } 
} 

Я принял этот ответ в $response переменной и попытался следующий, но ни одна из этих работ:

echo $order = $response["Shipments"]["ProcessedShipment"]["Reference1"]; 
echo $hawb  = $response["Shipments"]["ProcessedShipment"]["ID"]; 
echo $barcode = $response["Shipments"]["ProcessedShipment"]["ShipmentLabel"]["LabelURL"]; 

Я не могу попробовать слишком много, потому что нет никаких рамок тестирования с обслуживанием я должен вручную отменить все отправления, которые я создаю. Скажите, пожалуйста, что делать.

Заранее благодарим за помощь.

+1

Это объект, а не массив, вот почему. – deex

ответ

1

Это не массив, это в stdClass объект (общий Object).

Вы должны использовать $response->Shipments->ProcessedShipment->Reference1

+0

Это сработало отлично. Большое спасибо. – Aayush

3

Это объект, а не массив. Вы должны использовать -> для доступа к собственности.

$order = $response->Shipments->ProcessedShipment->Reference1; 
+0

Это сработало. Благодаря! – Aayush

1

используется -> оператор доступа к свойству объекта

$response->Shipments->ProcessedShipment->Reference1; 
$response->Shipments->ProcessedShipment->ID; 
$response->Shipments->ProcessedShipment->ShipmentLabel->LabelURL; 
+0

Это сработало. Благодаря! – Aayush

Смежные вопросы