无法访问stdClass php的属性

时间:2018-10-30 08:05:36

标签: 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"
  }
}

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

正确的语法是什么?

保罗

2 个答案:

答案 0 :(得分:1)

使用get_object_vars()

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

这会给你这个主意。

答案 1 :(得分:0)

示例StdClass对象:

$obj = new stdClass();

$obj->foo = "bar";

其他示例

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

通过变量的值:

$my_foo = 'foo';

echo $obj->{$my_foo};