2016-03-15 58 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