2011-10-30 36 views
0

amazonのapiから戻ってきたxmlをいくつか読んでいます。ほとんどの場合、amazonはxmlに類似した商品のリストを提供しますが、必ずしもそうではありません。同様の製品がある場合、私はそれらを一連のリンクとしてエコーします。問題は、すべての製品がxmlに類似の製品を持っているわけではないことです。このコードを変更して、同様の製品ノードが最初に存在するかどうかをチェックし、次に、リンクとしてそれらを次のようにレンダリングし続けている場合は、何もしません。以下のコードは、現在、XMLには同様の製品が存在しない場合、次のエラーメッセージを与える:ノードがphpで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

あなたはforeachの(ノート場合)の前に、このテストを行うことができます。

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"; 
    } 
} 

をエラーまたはnull VARSが'SimilarProduct'前にそこにいるんならばともかく、このテストは動作します(たとえば、もし'Item'がnullの場合、スクリプトは失敗します)。

:私はVARSに、この繰り返しのアクセスを意味し、あなたは物事のこの種を行わないことをお勧め(つまり - > ...-> ...->)あなたが低い制御を持つことになりますので、状況と何が起こっているのか。

+0

ありがとうございました! –

+0

@BenPatonあなたを助けてくれてうれしいです。 –

関連する問題