2016-08-01 55 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你有没有试试?它工作与否? –