簡體   English   中英

PHP:數組在foreach中表現異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM