我有一个通过SOAP客户端查询数据的类。查询结果作为对象数组返回。发生了一些奇怪的事情。我不确定它是否只发生在数组中有一个元素时。
以下是代码:
function getNotes($ticketid){
$ticketid = $this->ms_escape_string($ticketid);
$conn = new Connections();
$client = $conn->connectToAPI();
$xml = array('sXML' =>"<queryxml>".
"<entity>TimeEntry</entity>".
"<query>".
"<field>TicketID".
"<expression op='equals'>$ticketid</expression>".
"</field>".
"</query>".
"</queryxml>");
$result = $client->query($xml);
$noteso = $result->queryResult->EntityResults->Entity;
//set array counter
$x=0;
var_dump($noteso);
foreach($noteso as $note){
var_dump($note->ResourceID);
$name = $this->getResourceName($note->ResourceID);
$timeentryarray[$x] = array('createdate' => $note->CreateDateTime,
'summarynotes' => $note->SummaryNotes,
'resource' => $name
);
$x++;
}
return $timeentryarray;
}
当应用程序运行var_dump($ noteso)时没问题。打印
object(stdClass)#12 (15) {
["id"]=> int(36988)
["UserDefinedFields"]=> object(stdClass)#13 (0) { }
["TicketID"]=> int(26390)
["InternalAllocationCodeID"]=> int(28303142)
["Date"]=> string(19) "2010-10-25T00:00:00"
["StartDateTime"]=> string(19) "2010-10-25T04:59:00"
["EndDateTime"]=> string(19) "2010-10-25T05:04:00"
["HoursWorked"]=> float(0.08)
["HoursToBill"]=> float(0.0833333358)
["OffsetHours"]=> float(0)
["SummaryNotes"]=> string(69) "Hi Sarah, Do you have an example of a bounced email? Regards Simon"
["InternalNotes"]=> string(0) ""
["RoleID"]=> int(24482927)
["CreateDateTime"]=> string(23) "2010-10-25T05:06:28.023"
["ResourceID"]=> int(29699970)
}
但是foreach循环中的第二个var_dump($ note-&gt; ResourceID)只显示
NULL
然后访问该数组的每一行都会引发错误:
Notice: Trying to get property of non-object in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\ClientPortal\classes\OpenTickets.php on line 204
第204行
$name = $this->getResourceName($note->ResourceID);
暂时试图调试这个,有人可以提供任何建议吗?
此致
Jonesy
答案 0 :(得分:2)
如果我没有弄错的话,你会以错误的方式解决这个问题。 $noteso
有许多属性,其中包括ResourceID
。
foreach
正在运行该对象的每个属性。这些属性不具有名为ResourceID
的属性。
看起来你应该做的就是放弃foreach
和地址$noteso->ResourceID
。
答案 1 :(得分:1)
看起来$noteso = $result->queryResult->EntityResults->Entity;
返回一个对象,
可能需要一个while循环,你使用的是什么soap-client?