希望你们能帮助我…仍然是新的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);
和数据被提取并使用我的代码填充到我的表中(与这个问题无关)。
我现在的问题是,当我尝试为Summary
或Address
做同样的事情时,它不起作用:我得到错误"试图获得非对象的属性"
我试过$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