我在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
答案 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
等。