1

我一直在寻找我在 SW 上的问题的答案,但到目前为止还没有运气......所以就这样吧。我正在编写一个表单,用户可以在其中搜索在服务器上的 xml 文件中写入的项目……搜索功能运行良好;表单将值发送到 php 文件,并使用 simplexml 使用带有 if/else 语句的 foreach 从 xml 文件中检索数据。但是,当在 xml 文件中找不到项目时,问题就出现了。

这是我的php:

<?php
$zip = $_POST['zip'];
$id = $_POST['id'];

$xml = simplexml_load_file("lista.xml");
foreach ($xml as $entry){ 
if (($entry->zipCode == $zip) && ($entry->id == $id)){ 
?>
<p>Id: <?php echo $entry->id;?></p>
<p>Zip: <?php echo $entry->zipCode;?></p>
<p>Item: <?php echo $entry->item;?></p>
<?php
}
else {echo 'nothing found';}
}?>

这是我的xml:

<?xml version="1.0" encoding="utf-8"?>
<entries>
<entry>
<id>id1</id>
<zipCode>zip1</zipCode>
<item>1</item>
</entry>
<entry>
<id>id2</id>
<zipCode>zip2</zipCode>
<item>2</item>
</entry>
<entry>
<id>id3</id>
<zipCode>zip3</zipCode>
<item>3</item>
</entry>
</entries>

问题是,如果整个 xml 文件中没有项目,它不会只显示一次“未找到”,而是在每个没有搜索查询的条目中显示“未找到”。因此,例如,如果 $zip = zip4 和 $id = id4 答案是:

nothing found

nothing found

nothing found

而不是只有一个“没有找到”

编写那段代码的正确方法是什么?先谢谢大家了!!!

4

1 回答 1

3

使用变量来跟踪您是否找到任何东西。

$found = false;

foreach ($xml as $entry){ 
    if (($entry->zipCode == $zip) && ($entry->id == $id)){ 
        $found = true;
    ?>
    <p>Id: <?php echo $entry->id;?></p>
    <p>Zip: <?php echo $entry->zipCode;?></p>
    <p>Item: <?php echo $entry->item;?></p>
    <?php
    }
}
if (!$found) {
    echo 'nothing found';
}
于 2013-08-25T02:53:13.080 回答