2016-06-14 43 views
1

我有一個XML Feed,我正在從中檢索數據。從XML數據結果中排除多個值

我目前已編寫代碼來查找ID,然後跳過它並顯示所有其他結果。

XML代碼如下低於

<?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; 

?>

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

當前的PHP代碼,以便在發現ID 1922,並排除它的那一刻,但我要排除多IDS即1922年,1845年,2110年等

回答

0

如何與ID排除數組?
然後只是每次迭代檢查id是否是「inArray」。

<?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

非常感謝。 – ds2018

0

另一種方法是使用xpath查詢來修改xml結果。

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