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


php get first node of object stdClass

我正在为移动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_payment"对象,其中有一个名为"adaptive_payment"的对象。贝宝表示,由于他们接受两种类型的支付(信用卡或贝宝账户),因此支付凭证中的对象可以是两种情况之一。"adaptive_payment"或"rest_api"。

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

谢谢!

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

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

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