【问题标题】:Accessing nested objects within objects in PHP not working在 PHP 中访问对象内的嵌套对象不起作用
【发布时间】:2018-11-15 23:10:04
【问题描述】:

在 PHP 中,我使用他们的查询函数从我的 QuickBooks Online 帐户请求数据。

我正在遍历标准 foreach($customer as $x) 代码块中返回的每个客户对象。

使用 var_dump,我可以知道每个对象都有以下格式:

object(QuickBooksOnline\API\Data\IPPCustomer) [34]
public 'Taxable' => string 'true' (length=4)
public 'BillAddr' =>
    object(QuickBooksOnline\API\Data\IPPCustomer) [78]
    public 'Id' => string '7509' (length=4)
    public 'Line1' => '1234 Irrelevant Dr.' (length=19)

在 PHP 中,如果我只是尝试访问 $x->Taxable,它没有问题,但是我尝试访问的 any 子对象返回错误:“尝试获取非属性-X 行上的对象"

所以:

echo $x->Taxable; 

给了我应税身份,但是

echo $x->BillAddr->Line1; 

给我一​​个错误。

这些是公共课程,所以我不应该这样称呼它们吗?

【问题讨论】:

  • var_dump($x->BillAddr); 的结果是什么?
  • 它完全按照您的预期返回“BillAddr”子对象,并以与 var_dump($x) 完全相同的格式将其转储出去;如上所示。所以你会认为 $x->BillAddr->Line1 会起作用,但事实并非如此。甚至 var_dump($x->BillAddr->Line1);转储出正确的数据!但是,一旦我尝试将其分配给变量或数组,就会弹出该错误。
  • 您能否添加$x->BillAddr 的转储以更好地评估这一点?
  • 当然。 var_dump($x->BillAddr) : C:\...\QB.php:62: object(QuickBooksOnline\API\Data\IPPPhysicalAddress) [78] public 'Id' => '7509' (length=4) public 'Line1' => '1234 Irrelevant Dr.' (length=19)

标签: php api quickbooks


【解决方案1】:

发现了问题,但我不知道为什么需要这样做,但这是我如何让它工作的,添加花括号:

echo "{$x->BillAddr->Line1}"; 而不仅仅是echo "$x->BillAddr->Line1";

显然,同样的规则也适用于赋值:

$line1 = "{$x->BillAddr->Line1}";

谢谢你们的帮助,伙计们!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 2022-01-08
    • 2011-11-02
    • 2012-08-28
    相关资源
    最近更新 更多