2017-05-16 3 views
-1

Wenn das Ergebnis ausgeführt neigenWenn sonst Anweisung foreach-Schleife (XML)

der Ausgang entweder wiederholen: stringDogDogDogDogDogDog oder DogDogDogDogDogDogDog

während es entweder String oder Hund gewesen sein sollte

<?php 
$name = $_POST['name']; //node 
$search = $_POST['search']; //value to be search 
$xml = simplexml_load_file("patient.xml"); 

foreach ($xml ->patients as $patients) { 
if ($search == $patients -> $name) { 
    echo "string";  
} 
elseif ($search != $patients -> $name) { 
    echo "Dog"; 

}}?> 
+0

Zeigen Sie Ihre Datei 'patient.xml' an – Naga

+0

Versuchen Sie, die Datei nach mindestens einer Übereinstimmung und einer Ausgabestring zu durchsuchen, anderenfalls Hund ausgeben? –

+0

FYI - Sie brauchen in dieser Situation kein 'else if', einfach nur 'else'. – Enstage

Antwort

1

Ihre Frage ist Licht auf Details, so basiert meine Antwort rein auf meiner Annahme der gewünschten Funktionalität.

Sie haben eine XML-Datei und suchen ein Feld nach einem bestimmten Wert. Die XML-Datei enthält mehrere "Patienten", so dass Sie jede einzelne durchlaufen und testen, ob es eine Übereinstimmung gibt.

Wenn eine Übereinstimmung in der Datei gefunden wird, die Sie "string" ausgeben möchten, andernfalls möchten Sie Hund ausgeben.

Der Grund, dass Sie "stringDogDog ..." sehen, liegt daran, dass die Bedingung für jeden der "Patienten" ausgeführt wird. Es gibt mehrere "Patienten", die eine Ausgabe erzeugen.

Im Beispiel unten setze ich den Standardwert auf "Hund". Wenn eine Übereinstimmung gefunden wird, aktualisiere ich die Ausgabevariable.

// Default output should be dog. 
$output = 'Dog'; 

foreach ($xml->patients as $patients) { 
    if ($search === $patients->$name) { 
     $output = 'string'; 
     break; // we have our match so stop the loop.  
    } 
    // no else here or we're going to end up with the long output again... 
} 

echo $output; 
+0

danke! Es ist genau was passiert ist! – Seekcha