2016-06-14 68 views
0

我想從soap服務訪問一個對象。我的目標是獲得ID爲53的屬性中的值。在此之前,我已使用simplexml_load_string來獲取您在下面看到的對象。然而,當試圖使用 - >或['']鍵符號訪問對象時,會引發錯誤。我相信鑰匙中的@會導致問題。從soap服務訪問對象

我得到以下結果:

作爲vardump:

object(SimpleXMLElement)[1951] 
    public '@attributes' => 
    array (size=1) 
     'id' => string '53' (length=2) 

爲DD的結果:

SimpleXMLElement {#1951 ▼ 
    +"@attributes": array:1 [▼ 
    "id" => "53" 
    ] 
} 

調試部分:

$result =$service->call('DisplayCategories', [$data]); 

      $result = simplexml_load_string((string)$result->DisplayCategoriesResult->any); 
      // dd($result); 
      $result = $result->categories->category; 
      //dd($result); 
      $tempArr = array(); 

      foreach($result as $item) 
      { 
       // var_dump(html_entity_decode($item)); 
       var_dump($item); 
       dd(((object)$item)); 
       // dd(preg_replace(array("@"),'',$item)); 
       // dd(@simplexml_load_string($item)); 
       dd($item->attributes('id')); 
       $simple = $item->attributes('id'); 
       $resulters = ($item->attributes('id')); 
       dd($resulters); 
      } 

      $this->setResult($result); 
     }); 

回答

2

@attributes是一個函數WHI ch返回一個數組,你不直接訪問它。簡單地將其別名變爲一個變量,然後在完成之後使用索引。

$atts = $item->attributes(); 
dd($atts['id']); 

此外,作爲一個側面說明,cast你的對象的傾銷他們當它是一個simple xml object,否則你會看到,你可能是不是在找一些時髦的東西,反正string之前。

+0

謝謝!固體,我看到我有同樣的想法,但拉錯了財產的價值錯誤的方式$ item-> attributes('id'); – Scripta55