试图获得非客体的属性在SOAP PHP中-不确定为什么会发生此错误


"Trying to get property of non-object" in SOAP PHP - not sure why this error is occuring

希望你们能帮助我…仍然是新的PHP,我正在努力显示这个对象/数组集的结果的部分。我从SOAP web服务得到以下结果$results:

`object(stdClass)[9]
      public 'Summary' => 
          object(stdClass)[2]
                 public 'ID' => string '1096408402' (length=10)
                 public 'IKey' => string '1440010962' (length=10)
      public 'Address' => 
          object(stdClass)[4]
  public 'Forename' => string 'TEST' (length=4)
  public 'Surname' => string 'TESTER' (length=6)
  public 'DOB' => string '0000-00-00' (length=10)
  public 'Telephone' => string 'Unavailable' (length=11)
  public 'Occupants' => 
    array (size=3)
      0 => 
        object(stdClass)[12]
          ...
      1 => 
        object(stdClass)[13]
          ...
      2 => 
        object(stdClass)[14]
          ...
      3 => 
        object(stdClass)[15]
          ...

现在我正在尝试将数据放入表格格式。

我已经成功地在标记为Occupants的部分上使用foreach创建了表。我这样做是通过调用Occupants如下:$occupants = ($results->Address->Occupants);和数据被提取并使用我的代码填充到我的表中(与这个问题无关)。

我现在的问题是,当我尝试为SummaryAddress做同样的事情时,它不起作用:我得到错误"试图获得非对象的属性"

我试过$summary = $results->Summary$summary = $results['Summary'],都不工作。

我想做的就是运行<?php $summary = ($results->Summary);foreach($summary as $person):?>然后将它插入到我的表中,如下所示:<td><?=$person->ID?></td>

知道为什么会出现这个错误吗?我不认为这是在foreach方面…?

通常,您应该使用以下命令获取"Summary"对象:

$summary = $results->Summary

在本例中,$summary是一个具有2个属性的对象:"ID"answers"IKey"。如果用foreach遍历$summary,则$person的值将具有第一次循环迭代时的$summary->ID的值和第二次循环迭代时的$summary->IKey的值。$summary->ID$summary->IKey都是字符串,因此是非对象,所以我认为这就是你得到错误的原因。
我猜你想这样做:

$summary = $results->Summary;
foreach ($summary as $value)
  echo "<td>$value</td>";

这应该输出(对于给定的示例):

<td>1096408402</td><td>1440010962</td>

关于对象迭代的更多信息,我推荐:http://php.net/manual/en/language.oop5.iterations.php