我正在阅读一些从亚马逊的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";
}
答案 0 :(得分:0)
您可以在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'
为空,则脚本无论如何都会失败)。
注意:我建议你不要这样做,我的意思是重复访问vars(即 - &gt; ...-&gt; ...-&gt;),因为你将对情况以及正在发生的事情控制不力。