2016-06-14 11 views
1

Ich habe einen XML-Feed, von dem ich Daten abrufe.Mehrere Werte aus Ergebnissen in XML-Daten ausschließen

Ich habe derzeit den Code geschrieben, um eine ID zu finden und dann überspringen Sie es und zeigen Sie alle anderen Ergebnisse.

XML-Code ist unter

<Agents> 
    <Agent> 
     <id></id> 
     <description></description> 
     <name></name> 
    </Agent> 
</Agents> 

Aktuelle PHP-Code unten

<?php 
    $html = ""; 
    $url = "xml feed"; 
    $xml = simplexml_load_file($url); 
    $idToFind = 1922; 
    for ($i = 0; $i < 300; $i++) { 
     $id = $xml->Agent[$i]->id; 
     if ($id == $idToFind) 
      continue; 
      { 

     $id = $xml->Agent[$i]->id; 
     $name = $xml->Agent[$i]->name; 

     $html .= "<h2>$name</h2><h3>$id</h3>";} 

    echo $html; 

?>

Also im Moment ist es ID findet 1922 und schließt sie, aber ich möchte mehrere ausschließen IDS dh 1922, 1845, 2110 usw.

Antwort

0

Wie wäre es mit einem Array mit der IDs auszuschließen?
Überprüfen Sie dann mit jeder Iteration, ob die ID "inArray" ist.

<?php 
    $html = ""; 
    $url = "xml feed"; 
    $xml = simplexml_load_file($url); 
    $idsToFind = array(1922, 1845, 1234, 8347 ... ...); 
    for ($i = 0; $i < 300; $i++) { 
     $id = $xml->Agent[$i]->id; 
     if (in_array($id, $idsToFind)) 
      continue; 
      { 

     $id = $xml->Agent[$i]->id; 
     $name = $xml->Agent[$i]->name; 

     $html .= "<h2>$name</h2><h3>$id</h3>";} 

    echo $html; 
?> 
+0

Toll, dass funktioniert hat danke. – ds2018

0

Ein anderer Ansatz wäre die Verwendung der Xpath-Abfrage, um das XML-Ergebnis zu modifizieren.

$str = "<Agents> 
    <Agent> 
     <id>1</id> 
     <description>a</description> 
     <name>a</name> 
    </Agent> 
    <Agent> 
     <id>2</id> 
     <description>b</description> 
     <name>b</name> 
    </Agent> 
    <Agent> 
     <id>3</id> 
     <description>c</description> 
     <name>c</name> 
    </Agent> 
    <Agent> 
     <id>4</id> 
     <description>d</description> 
     <name>d</name> 
    </Agent> 
</Agents>"; 

$xml = simplexml_load_string($str); 
$result = $xml->xpath('//Agent[not(id = 1 or id = 3)]'); 
echo "<pre>"; 
print_r($result);