使用php检查xml中是否存在节点

发布于 2024-12-12 21:47:18 字数 641 浏览 4 评论 0原文

我正在阅读一些从亚马逊 api 返回的 xml。大多数时候,亚马逊会在其 xml 中提供类似产品的列表,但并非总是如此。如果有类似的产品,我会将它们作为一组链接进行回应。问题是并非所有产品在 xml 中都有类似的产品。我想更改此代码,以便它首先检查是否有类似的产品节点,然后如果有,则继续将它们呈现为链接,如下所示,但如果没有,则什么也不做。如果 xml 中没有类似产品,下面的代码当前会给出以下错误消息:

Warning: Invalid argument supplied for foreach() in /public_html/product.php on line 26

如果从亚马逊返回的 xml 中没有类似产品节点。

提前致谢。

foreach ($result->Items->Item->SimilarProducts->SimilarProduct as $SimilarProduct) {
echo "<li><a href=\"product.php?prod=" . $SimilarProduct->ASIN . "\">" . $SimilarProduct->Title . "</a></li/> \n";
}

I am reading some xml which has come back from amazon's api. Most times amazon provides a list of similar products in their xml, but not always. If there are similar products I echo our them as a set of links. The problem is that not all products have similar products in the xml. I would like to change this code so that it checks if there are similar products nodes first and then if there are it continues to render them out as links as below but if not it just does nothing. The code below currently gives the following error message if there are no similar products in the xml:

Warning: Invalid argument supplied for foreach() in /public_html/product.php on line 26

if there are no similar product nodes in the xml returned from amazon.

Thanks in advance.

foreach ($result->Items->Item->SimilarProducts->SimilarProduct as $SimilarProduct) {
echo "<li><a href=\"product.php?prod=" . $SimilarProduct->ASIN . "\">" . $SimilarProduct->Title . "</a></li/> \n";
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

辞旧 2024-12-19 21:47:18

您可以在 foreach 之前执行此测试(注意 if):

if ($result->Items->Item->SimilarProducts->SimilarProduct !== null)
{
   foreach ($result->Items->Item->SimilarProducts->SimilarProduct as $SimilarProduct) {
      echo "<li><a href=\"product.php?prod=" . $SimilarProduct->ASIN . "\">" . $SimilarProduct->Title . "</a></li/> \n";
   }
}

无论如何,如果 'SimilarProduct' 之前没有错误或空变量(例如,如果'Item' 为空,脚本无论如何都会失败)。

注意:我建议你不要做这种事情,我的意思是重复访问变量(即->...->...->),因为你会对局势和正在发生的事情控制力低。

You can do this test before the foreach (note the if):

if ($result->Items->Item->SimilarProducts->SimilarProduct !== null)
{
   foreach ($result->Items->Item->SimilarProducts->SimilarProduct as $SimilarProduct) {
      echo "<li><a href=\"product.php?prod=" . $SimilarProduct->ASIN . "\">" . $SimilarProduct->Title . "</a></li/> \n";
   }
}

Anyway this test works if there're no errors or null vars before the 'SimilarProduct' (for example if 'Item' is null the script will fail anyway).

Note: I suggest you to not do this kind of things, I mean this repeated access to vars (that is ->...->...->) because you will have a low control on the situation and on what's happening.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文