如果变量具有特定值,则仅继续读取XML

时间:2016-09-04 09:40:05

标签: php xml loops simplexml infinite

我有一段相当简单的PHP代码

$xml = file_get_contents($url, false, $context);
$response = simplexml_load_string($xml);
$status_response = $response->xpath('/PollSessionResponseDto/Status');
$answer = $status_response[0];

while ($answer<>"UpdatesComplete") {
    sleep(2);
    $answer = $response->xpath('/PollSessionResponseDto/Status')[0];
} 

$itenaries = $response->xpath('/PollSessionResponseDto/Itineraries/ItineraryApiDto');

我是reading an XML file, for example,如果XML文件中的状态为“UpdatesComplete”,我只想继续阅读itenaries。如果状态为“UpdatesPending”,我基本上要等待2秒钟。然后再次检查并在必要时再等待2秒钟。

但是我最终陷入了无限循环。我检查了我的$answer变量,似乎我得到了我要检查的字符串(UpdatesPending或UpdatesComplete)。

有谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:1)

$answer的值永远不会在循环中更改,因为您永远不会从远程主机重新加载XML文件。

do {

    $xml = file_get_contents($url, false, $context);
    $response = simplexml_load_string($xml);

    $answer = $response->xpath('/PollSessionResponseDto/Status')[0];

} while ($answer != "UpdatesComplete" && slee(2));