PHP: documentElement-> childNodes предупреждение - PullRequest
3 голосов
/ 25 марта 2010
$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 />";
 }
}

Теперь я получаю это предупреждение на каждом втором foreach:

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

Пожалуйста, помогите, ребята. Спасибо!

1 Ответ

7 голосов
/ 25 марта 2010

Некоторые узлы не имеют дочерних элементов, поэтому вы передаете нулевой (недействительный) аргумент в foreach (как сказано в предупреждении).

Чтобы избежать предупреждений, необходимо проверить, есть ли у текущего узла дочерние элементы. Для этого вы можете использовать метод DOMNode::hasChildNodes():

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