$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
Пожалуйста, помогите парням. Благодаря!
Некоторые узлы не имеют дочерних элементов, поэтому вы передаете нулевой (недопустимый) аргумент в foreach (как указано в предупреждении).
Чтобы избежать предупреждений, вам нужно проверить, есть ли у текущего узла какие-либо дети. Для этого вы можете использовать метод DOMNode::hasChildNodes()
:
foreach($items->childNodes as $item) { if ($item->hasChildNodes()) { $childs = $item->childNodes; foreach($childs as $i) { echo $i->nodeValue . "<br />"; } } }