2017-05-16 97 views
-1

當執行的結果往往會重複如果使用foreach循環(XML)else語句

輸出可以是:stringDogDogDogDogDogDog 或DogDogDogDogDogDogDog

,而這應該是字符串或狗

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

顯示您的'patient.xml'文件 – Naga

+0

您是否在搜索文件中至少有一個匹配和輸出字符串,否則輸出狗? –

+0

僅供參考 - 在這種情況下你不需要'else if',只需簡單地'else'。 – Enstage

回答

1

你的問題很簡單,所以我的答案完全基於我對所需功能的假設。

您有一個XML文件,並且您正在搜索給定值的字段。 XML文件有多個「患者」,因此您可以循環瀏覽每個「患者」並測試是否匹配。

如果在文件中找到想要輸出「string」的匹配項,否則要輸出狗。

你看到'stringDogDog ...'的原因是因爲條件是在每個「患者」上執行的。有多個「患者」產生輸出。

在下面的示例中,我將缺省值設置爲「Dog」。然後,如果找到匹配,我正在更新輸出變量。

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

謝謝!這正是發生的事情! – Seekcha