2016-08-01 15 views
0

Vergleich ich von einer API in XML-Daten am Ziehen eines SimpleXMLElement in PHP und durch die Elemente iteriert wie folgt:PHP Werte als weder wahr noch falsch

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

diesen Code verwenden, 12 Elementnamen zurückgegeben (welches ist richtig).

Wenn ich jedoch diese Elemente durchlaufe, möchte ich alle, die abgeschlossen sind, überspringen und die unvollständigen weiter verarbeiten.

Die XML von der API zurückgegeben wird ist wie folgt formatiert:

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

Wenn ich ein „wenn abgeschlossen, dann brechen“ Anweisung innerhalb der foreach Loop In die fertigen Elemente zu umgehen, ist es verarbeitet nur 1 Element (es sollte 7 sein):

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

Wenn ich den Code ändern, um die unvollständigen Elemente zu umgehen, gibt sie korrekt die 5 Elemente unvollständige Namen.

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

Es scheint, als ob die anderen 6 Elemente sowohl als ‚wahr‘ und ‚falsch‘ zu sehen sind, weil sie sowohl über der oben genannten Szenarien übersprungen werden.

Ich habe andere Vergleiche auch versucht, aber keiner von ihnen gibt die 7 unvollständigen Elemente zurück.

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

Es muss etwas geben, das ich übersehe - jede Anleitung, die Sie geben können, würde geschätzt werden.

+2

Ich glaube, Sie 'wollen CONTINUE anstatt' break', nicht wahr? – smarx

+0

Wenn ich '$ element-> completed' hake, bekomme ich 7x 'false' und 5x' true' –

Antwort

0

Hallo können Sie ersetzen Sie bitte Code

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

Hi Lance Yoder hast du es versucht? Funktioniert es oder nicht? –

Verwandte Themen