2016-03-15 60 views
0

我有一個XML格式文件,其中有對象內的對象。這是我第一次拿到對象,這對我來說工作正常的值:使用XML格式的文件訪問對象內的對象問題

$soapclient = new SoapClient('http://anywb/book.asmx?WSDL'); 
$params = array('ISBN' => "1111"); 
$response = $soapclient->GetBookByISBN($params);  
//This will give me the value "Success" 
$result = $response->GetBookByISBNResult->ResponseText; 

現在的問題是如何訪問這是內部對象的對象。例如,如何獲得4的「BookID」以及如何獲得1的「Type」值?

任何建議,將不勝感激。這裏是對象:

stdClass Object 
     (
      [GetBookByISBN] => stdClass Object 
       (
        [ResponseText] => Success 
        [SearchResult] => stdClass Object 
         (
          [Search] => Array 
           (
            [0] => stdClass Object 
             (
              [Date] => 2015-10-20 
              [BookID] => 4 
              [Discription] => stdClass Object 
               ( 
                [Type] => 1 
               ) 

              [Probability] => stdClass Object 
               (
                [Kids] => 
                [Adult] => 00 
               ) 

             ) 

            [1] => stdClass Object 
             (
              [Date] => 2016-11-15 
              [BookID] => 5 
              [Discription] => stdClass Object 
               ( 
                [Type] => 2 
               ) 

              [Probability] => stdClass Object 
               (
                [Kids] => 
                [Adult] => 00 
               ) 
             ) 
    )))) 
+0

我想指出你的代碼與你的對象不匹配。你有這樣的代碼行:'$ result = $ response-> GetBookByISBNResult-> ResponseText;'但是根據對象它應該是''result = $ response-> GetBookByISBN-> ResponseText;' 你請統一在你的問題中的對象的用法? – BrainStone

回答

1

你不喜歡這樣:

$response->GetBookByISBN->SearchResult->Search[0]->BookID; 
$response->GetBookByISBN->SearchResult->Search[0]->Discription->Type; 

如果你想有一個包含所有書籍ID的數組,你將有這樣的事情:

$BookIDs = array(); 

foreach($response->GetBookByISBN->SearchResult->Search as $key => $value) { 
    $BookIDs[$key] = $value->BookID; 
} 

或者如果您希望能夠使用$BookIDs(作爲示例)修改$response中的值,則看起來像這樣:

$BookIDs = array(); 

foreach($response->GetBookByISBN->SearchResult->Search as $key => $value) { 
    $BookIDs[$key] = &$value->BookID; 
} 
+0

謝謝BrainStone ...如果我們想要所有數組的所有BookID(從數組0到數組n)? – Irfana

+0

@Irfana我更新了我的答案 – BrainStone

+0

謝謝,但是當我嘗試'var_dump($ value-> BookId);'我得到NULL值。有什麼建議麼?因爲我需要將該Book ID放在表格中。 – Irfana