将IF语句放入foreach并丢失输入

时间:2017-11-20 04:08:04

标签: php html html5 if-statement foreach

我在foreach循环中有一个IF语句,从XML文件中获取数据。然后,我想要遍历XML文件中的每个条目,如果它不符合某个标准,则跳过将其放入表中。下面的代码只是跳过每个条目,它返回空白,没有任何内容放在表格中。

PHP代码:

<movie>
        <name>Harry Potter</name>
        <path>images/harry.jpg</path>
        <sad>50</sad>
        <agitated>25</agitated>
        <tired>50</tired>
        <scared>75</scared>
</movie>

XML CODE:

Spring Boot

1 个答案:

答案 0 :(得分:0)

认为问题在于你的XML文件包含一部电影,所以不是在多部电影上循环,而是foreach循环遍历单一的子节点电影。

这是一个我认为应该做你想要的版本:

<table width="500" border="0" cellpadding="5">
<tr>
<?php

$xml=simplexml_load_file(dirname("movie.xml") or die("Error: Cannot create object");

foreach($xml->children() as $movie) :  
 if($movie->sad<=$_GET['happiness']
   && $movie->agitated<=$_GET['calmness']
   && $movie->tired<=$_GET['tired']
   && $movie->scared<=$_GET['scared'] )
   {?>
     <td align="center" valign="center">
     <img src="<?php echo $movie->path?>" width="150px" alt="<?php echo $movie->descrip?>"/>
     <br />
     <?php echo $movie->name ?>
     </td>
  <?php } endforeach; ?>
</tr>
</table>

XML:

<movies>
    <movie>
            <name>Harry Potter</name>
            <path>images/harry.jpg</path>
            <sad>50</sad>
            <agitated>25</agitated>
            <tired>50</tired>
            <scared>75</scared>
    </movie>
    <movie>
            <name>Harry Potter</name>
            <path>images/harry.jpg</path>
            <sad>50</sad>
            <agitated>25</agitated>
            <tired>50</tired>
            <scared>75</scared>
    </movie>
</movies>

注意xml文件现在如何包含多个<movie>个节点,每个节点位于<movies>节点内,$xml->sad如何变为$movie->sad等。