如何在 PHP 和 PHP 中使用 foreach XML(简单XML)
有人了解 PHP 和 XML 吗?那么请大家看看吧!
这是我的 PHP 代码:
<? $xml = simplexml_load_file("movies.xml");
foreach ($xml->movie as $movie){ ?>
<h2><? echo $movie->title ?></h2>
<p>Year: <? echo $movie->year ?></p>
<p>Categori: <? echo $movie->regions->region->categories->categorie ?></p>
<p>Country: <? echo $movie->countries->country ?></p>
<? } ?>
这是我的 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<movies>
<movie>
<title>A movie name</title>
<year>2010</year>
<regions>
<region>
<categories>
<categorie id="3">Animation</categorie>
<categorie id="5">Comedy</categorie>
<categorie id="9">Family</categorie>
</categories>
<countries>
<country id="123">USA</country>
</countries>
</region>
</regions>
</movie>
<movie>
<title>Little Fockers</title>
<year>2010</year>
<regions>
<region>
<categories>
<categorie id="5">Comedy</categorie>
</categories>
<countries>
<country id="123">USA</country>
</countries>
</region>
</regions>
</movie>
</movies>
上面代码的结果是:
<h2>A movie name</h2>
<p>Year: 2010</p>
<p>Category: Animation</p>
<p>Country: USA</p>
<h2>Little Fockers</h2>
<p>Year: 2010</p>
<p>Category: Comedy</p>
<p>Country: USA</p>
我希望它是这样的(请参阅第一部电影的类别):
<h2>A movie name</h2>
<p>Year: 2010</p>
<p>Category: Animation, Comedy, Family</p>
<p>Country: USA</p>
<h2>Little Fockers</h2>
<p>Year: 2010</p>
<p>Category: Comedy</p>
<p>Country: USA</p>
注意:我也想知道如何得到单词之间的逗号,但最后一个单词上没有逗号......
Anyone that knows PHP and XML out there? Then please have a look!
This is my PHP code:
<? $xml = simplexml_load_file("movies.xml");
foreach ($xml->movie as $movie){ ?>
<h2><? echo $movie->title ?></h2>
<p>Year: <? echo $movie->year ?></p>
<p>Categori: <? echo $movie->regions->region->categories->categorie ?></p>
<p>Country: <? echo $movie->countries->country ?></p>
<? } ?>
This is mys XML file:
<?xml version="1.0" encoding="UTF-8"?>
<movies>
<movie>
<title>A movie name</title>
<year>2010</year>
<regions>
<region>
<categories>
<categorie id="3">Animation</categorie>
<categorie id="5">Comedy</categorie>
<categorie id="9">Family</categorie>
</categories>
<countries>
<country id="123">USA</country>
</countries>
</region>
</regions>
</movie>
<movie>
<title>Little Fockers</title>
<year>2010</year>
<regions>
<region>
<categories>
<categorie id="5">Comedy</categorie>
</categories>
<countries>
<country id="123">USA</country>
</countries>
</region>
</regions>
</movie>
</movies>
The outcome of the code above is:
<h2>A movie name</h2>
<p>Year: 2010</p>
<p>Category: Animation</p>
<p>Country: USA</p>
<h2>Little Fockers</h2>
<p>Year: 2010</p>
<p>Category: Comedy</p>
<p>Country: USA</p>
I want it to be like this (see category on the first movie):
<h2>A movie name</h2>
<p>Year: 2010</p>
<p>Category: Animation, Comedy, Family</p>
<p>Country: USA</p>
<h2>Little Fockers</h2>
<p>Year: 2010</p>
<p>Category: Comedy</p>
<p>Country: USA</p>
Note: Also I wonder how to get the comma between the words, but without a comma on the last word...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
试试这个。
Try this.
这是将 foreach 与 simplexmlElement 结合使用的方法:
this is how you use foreach with an simplexmlElement:
您还需要迭代
categorie
元素,就像迭代movies
一样。您可能还想修剪尾随的
,
。我的评论中提到的方法:
You need to iterate through the
categorie
elements too, in the same way you've iterated throughmovies
.You'll probably want to trim the trailing
,
as well.The method mentioned in my comment:
然后您可以像这样从循环中调用它:
使用数组和 implode 消除了对计数和检测最后一个类别的逻辑的需要。
将其隔离在函数中使其更易于维护,并且比嵌套循环更不易混淆(尽管不可否认,嵌套循环并不那么令人困惑)。
Then you can jsut call it from your loop like:
Using an array and
implode
removes the need for logic of counting and detecting the last category.Isolating it in a function makes it easier to maintain and is less confusing than nesting the loop (though admittedly nested loops arent that confusing).
试试这个
Try This one