无法访问stdClass php的属性



我使用php中的soap客户端从soap服务获取信息

我终于把电话接通了,这是个好消息!

<?
$url = "MYURL";
$client = new SoapClient($url, array("trace" => 1, "exception" => 0)); 
$SOAPCall = "Method";
$SoapCallParameters = new stdClass();
$SoapCallParameters->webUserKey = 'Value1';
$SoapCallParameters->urn = 'Value2';
$obj = $client->Method($SoapCallParameters);
var_dump ($obj);
echo $obj->{'LastName'};
?>

该方法通过转储返回

object(stdClass)#3 (1) { [["LastName"]=> string(10) "Test"} ]}

但是echo语句不会打印LastName属性

我做错了什么?我尝试过不同的组合,比如将属性放入字符串变量中

我已经尝试了其他方法,但它仍然不起作用

这种方法也不适用于

$obj = $client->Method($SoapCallParameters);
$vars = get_object_vars($obj);
$arr = (array)$vars;
var_dump($arr);
$lastName = (string) $arr[0]["LastName"];
echo $lastName;

使用上面的逻辑执行var_dump会得到

我可以从var_dump中看到,响应中有值

array(2) {
["CheckRegistrationStatus_UrnResult"]=>
string(10) "MatchFound"
["result"]=>
object(stdClass)#4 (6) {
["Age"]=>
string(2) "21"
["FirstClaimClub"]=>
string(47) "VALUE"
["FirstName"]=>
string(6) "FIRSTNAME"
["LastName"]=>
string(10) "LASTNAME"
["Registered"]=>
bool(true)
["URN"]=>
string(7) "VALUE"
}
}

这意味着我试图引用姓氏的方式是错误的

正确的语法是什么?

Paul

使用get_object_vars()

$obj = $client->Method($SoapCallParameters);
$obj = get_object_vars($obj);
var_dump($obj['result']->LastName);

这会给你一个想法。

示例StdClass对象:

$obj = new stdClass();
$obj->foo = "bar";

其他示例

echo $obj->foo; // -> "bar"

按变量值:

$my_foo = 'foo';
echo $obj->{$my_foo};

最新更新