2016-08-01 34 views
0

我在XML數據從API使用PHP一個SimpleXMLElement並通過元件迭代如下拉動:比較作爲不真不僞PHP值

$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) 

必須有一些我忽略 - 任何指導,你可以給予讚賞。

+2

我想你想'continue'而不是'break',對不對? – smarx

+0

如果我回應'$ element-> completed',我得到7x'false'和5x'true' –

回答

0

嗨可以請你代替代碼

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

Hi Lance Yoder你有沒有試試?它工作與否? –