如何解析stdClass对象?

时间:2012-07-18 17:39:52

标签: php

我有一个SOAP响应,其var_dump如下所示:

object(stdClass)[14]
  public 'GetClientsResult' => 
    object(stdClass)[15]

我无法弄清楚如何为我的生活解析这个问题,我以前从未使用过stdClass。

如何在PHP中解析此响应?

2 个答案:

答案 0 :(得分:3)

对于初学者,您可以将其强制转换为数组(假设对象存储在$response中):

$response = (array) $response;

或者你可以通过以下方式访问:

$response->GetClientResult->otherStuff;

答案 1 :(得分:1)

StdClass是一个空类,您可以在其中设置和获取属性值。一个例子:

 <?php
 // $response is a normal array
 $response['GetClientResult'] = 'foo'; // set
 $response['GetClientResult']; // get

 // $response is a StdClass
 $response->GetClientResult = 'foo'; // set
 $response->GetClientResult; // get
 ?>

如果你想将类强制转换回数组,你可以使用:

$response = (array) $response

如果你想做那个递归,因为你有多个StdClasses:

function StdClass2array(StdClass $class)
{
    $array = array();

    foreach ($class as $key => $item)
    {
            if ($item instanceof StdClass) {
                    $array[$key] = StdClass2array($item);
            } else {
                    $array[$key] = $item;
            }
    }

    return $array;
}