PHP:documentElement-> childNodes警告

Lor*_*Jr. 3 php domdocument

$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 />";
 }
}
Run Code Online (Sandbox Code Playgroud)

现在我在每个第二个foreach中得到这个警告:

Warning: Invalid argument supplied for foreach() in file_example.php  on line 14
Run Code Online (Sandbox Code Playgroud)

请帮帮我们 谢谢!

rog*_*pvl 7

有些节点没有子节点,因此您将一个null(无效)参数传递给foreach(就像警告所说的那样).

要避免警告,您需要检查当前节点是否有子节点.为此,您可以使用以下DOMNode::hasChildNodes()方法:

foreach($items->childNodes as $item) { 
    if ($item->hasChildNodes()) {
        $childs = $item->childNodes;
        foreach($childs as $i) {
            echo $i->nodeValue . "<br />";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)