希望你们能帮助我......还是PHP的新手,我正在努力展示这个Object / Array结果集的部分内容。
我从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]
...
现在我试图将数据放入表格格式。
我已成功使用标记为foreach
的部分Occupants
创建表格。我通过调用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
方面......?
答案 0 :(得分:1)
通常,您应该使用以下内容获取“摘要”对象:
$summary = $results->Summary
在这种情况下,$summary
是一个具有2个属性的对象:“ID”和“IKey”。
如果您使用$summary
迭代foreach
,则$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>
这应该输出(对于给定的例子):
SELECT
permit_id,
SUM(poc_emissions) AS POC_emissions,
SUM(non_poc_emissions) AS NON_POC_emissions
FROM
( .... SUBQUERY ...) main
GROUP BY
permit_id
有关对象迭代的更多信息,我建议:http://php.net/manual/en/language.oop5.iterations.php