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