php获取对象stdClass的第一个节点

时间:2013-07-23 14:53:40

标签: php parsing paypal

我正在使用移动SDK的PayPal付款验证。

以下是从沙箱返回的数据转储。

["proof_of_payment"]=>
object(stdClass)#27 (1) {
["adaptive_payment"]=>
object(stdClass)#28 (4) {
  ["app_id"]=>
  string(14) "APP-1234567890"
  ["payment_exec_status"]=>
  string(9) "COMPLETED"
  ["pay_key"]=>
  string(20) "AP-70M68096ML426802W"
  ["timestamp"]=>
  string(20) "2013-07-23T12:10:17Z"

所以有一个" proof_of_payment"对象,并且在其中有一个名为" adaptive_tayment"的对象。 Paypal说,因为有两种类型的付款,他们接受(信用卡或PayPal帐户),proof_of_payment中的对象可以是两件事之一。 " adaptive_payment"或" rest_api"。

使用PHP,您将如何测试空间中的内容" adaptive_cayment"?这不是您通常的key->值案例,因为它是对象本身的名称。显然,数组语法在这里不起作用,因为它不是数组,也不能做proof_of_payment [0]。那么测试的正确方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

只需检查isset()存在哪个密钥:

if (isset($obj->adaptive_payment)) {
  // adaptive payment code...
}
else if (isset($obj->rest_api)) {
  // rest api code...
}

或者,您可以使用property_exists()。但在您的情况下,isset()就足够了,因为密钥将被设置或未设置。