[英]PHP: Array acting strangely in foreach
我有一個通過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-> 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
如果我沒記錯的話,那么您將以錯誤的方式進行操作。 $noteso
具有許多屬性,其中包括ResourceID
。
foreach
正在運行該對象的每個屬性 。 這些屬性將沒有名為ResourceID
的屬性。
看來您應該做的是刪除foreach
並處理$noteso->ResourceID
。
看起來像$noteso = $result->queryResult->EntityResults->Entity;
返回一個對象,
也許需要一個while循環,您正在使用什么肥皂客戶端?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.