3
$xml = file_get_contents(example.com);

$dom = new DomDocument();
$dom->loadXML($xml);

$items = $dom->documentElement;

foreach($items->childNodes as $item) { 
 $childs = $item->childNodes;
 foreach($childs as $i) {
  echo $i->nodeValue . "<br />";
 }
}

これで、2 回目の foreach ごとに次の警告が表示されます。

Warning: Invalid argument supplied for foreach() in file_example.php  on line 14

みんな助けてください。ありがとう!

4

1 に答える 1

7

一部のノードには子がないため、foreach に null (無効な) 引数を渡しています (警告が示すように)。

警告を回避するには、現在のノードに子があるかどうかを確認する必要があります。そのためには、次のDOMNode::hasChildNodes()方法を使用できます。

foreach($items->childNodes as $item) { 
    if ($item->hasChildNodes()) {
        $childs = $item->childNodes;
        foreach($childs as $i) {
            echo $i->nodeValue . "<br />";
        }
    }
}
于 2010-03-24T22:19:48.327 に答える