Php 使用foreach循环(Xml)的If-else语句

Php 使用foreach循环(Xml)的If-else语句,php,xml,Php,Xml,执行时,结果往往会重复 输出为:stringdogdog 还是狗狗 而它应该是绳子或狗 <?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 -&

执行时,结果往往会重复

输出为:stringdogdog 还是狗狗

而它应该是绳子或狗

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

}}?>
患者作为$patients){
如果($search==$patients->$name){
回声“字符串”;
}
elseif($search!=$patients->$name){
呼应“狗”;
}}?>

您的问题非常详细,因此我的回答完全基于我对所需功能的假设

您有一个XML文件,并且正在搜索一个字段以获得给定的值。XML文件有多个“患者”,因此您将循环遍历每个患者并测试是否存在匹配项

如果在要输出“string”的文件中找到匹配项,则要输出dog

您之所以看到“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;

显示您的
patient.xml
文件您是否尝试在文件中搜索至少一个匹配项和输出字符串,否则输出狗?仅供参考-在这种情况下,您不需要
else,只要
else