2016-03-04 91 views
-1
object(stdClass)#5 (1) { 
    ["Record"]=> object(stdClass)#6 (3) { 
     ["EmployeeId"]=> int(2637944) 
     ["BioInfo"]=> object(stdClass)#7 (2) { 
      ["FirstName"]=> string(6) "Aprony" 
      ["LastName"]=> string(1) "!" 
     } 
     ["GroupId"]=> array(38) { 
      [0]=> int(2601) 
      [1]=> int(2661) 
      [2]=> int(2663) 
      [3]=> int(3481) 
      [4]=> int(3602) 
     } 
    } 
} 

我是PHP的新手,我對某些服務提出了SOAP請求,結果如上所示。我的目標是最終在MYSQL表中存儲EmployeeId,FirstName,LastNameGroupId如何使用PHP處理此對象?

我試圖所以像:

foreach ($response->{'Record'} as $obj){  
    //$line = $obj->{'ConsId'}."\t".$obj->{'ConsName'}->{'FirstName'}."\t".$obj->{'ConsName'}->{'LastName'};     
    //echo $line."<br>"; 
} 
+0

您可以使用[get_object_vars()](http://php.net/manual/en/function.get-object-vars.php),如果你不知道屬性將會是什麼,但對於類似SOAP響應的應用程序,您應該已經知道結構。 – Dezza

+0

你已經正確地進入'$ response - > {'Record'}'。這又是一個「對象(stdClass)」。再次做同樣的事情你做的第一步... – deceze

+0

你可以將其轉換爲數組,以便您可以輕鬆地處理它。請參考給定的鏈接:http://stackoverflow.com/questions/2476876/how-do-i-convert-an-object-to-an-array – Indrajit

回答

2

在你給出的例子中,沒有必要使用foreach。簡單地使用對象變量應該工作:

$EmployeeId = $response->Record->EmployeeId; 
$FirstName = $response->Record->BioInfo->FirstName; 
$LastName = $response->Record->BioInfo->LastName; 
$GroupId = $response->Record->GroupId; //receives the array 
+0

這似乎工作,但如果我正在處理一些對象我肯定需要有一些形式的循環...謝謝 – bingwa

+0

這是正確的,但我只能根據你的給定的情況下我的答案。如果您需要更接近實際場景的幫助,請更新您的問題,我會更新我的答案。 – morcen