簡體   English   中英

PHP值比較既不是true也不是false

[英]PHP values comparing as neither true nor false

我正在使用PHP中的SimpleXMLElement從API提取XML數據,並如下遍歷這些元素:

$xml = new SimpleXMLElement (file_get_contents ($api_url));
foreach ($xml->element as $element) {
    print $element->name;
}

使用此代碼,將返回12個元素名稱(正確)。

但是,當我遍歷這些元素時,我想跳過所有已完成的元素,並繼續處理未完成的元素。

從API返回的XML格式如下:

<element>
    <name>Alpha</name>
    <completed>true</completed>
</element>
--or--
<element>
    <name>Beta</name>
    <completed>false</completed>
</element>

如果在foreach循環中添加“如果已完成,則要中斷”語句以繞過已完成的元素,則它僅處理1個元素(應該為7個):

foreach ($xml->element as $element) {
    if ($element->completed == 'true')
        break;
    /* continue processing incomplete elements */
}

如果我更改代碼以繞過不完整的元素,它將正確返回5個不完整的元素名稱。

if ($element->completed == 'false')
    break;

似乎其他6個元素都被視為“真”和“假”,因為在上述兩種情況下都將它們跳過了。

我也嘗試過其他比較,但是沒有一個返回7個不完整的元素。

=== 'true' (returns 12 elements)
=== 'false' (returns 12 elements)
== true (returns 0 elements)
== false (returns 12 elements)
=== true (returns 12 elements)
=== false (returns 12 elements)

我必須忽略一些東西-您可以提供的任何指導將不勝感激。

您好,請您替換代碼

foreach ($xml->element as $element) {
    if ($element->find('completed')[0]->plaintext == 'true')
        break;
    /* continue processing incomplete elements */
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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