note 90292 modified in domnode.removechild by danbrown

From: Date: Wed, 15 Apr 2009 13:00:29 +0000
Subject: note 90292 modified in domnode.removechild by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-153311@lists.php.net to get a copy of this message
You can't remove DOMNodes from a DOMNodeList as you're iterating over them in a foreach loop. For example... <?php $domNodeList = $domDocument->getElementsByTagname('p'); foreach ( $domNodeList as $domElement ) { // ...do stuff with $domElement... $domElement->parentNode->removeChild($domElement); } ?> ... will seemingly leave the internal iterator on the foreach out of wack and results will be quite strange. Though, making a queue of items to remove seems to work. For example... <?php $domNodeList = $domDocument->getElementsByTagname('p'); $domElemsToRemove = array(); foreach ( $domNodeList as $domElement ) { // ...do stuff with $domElement... $domElemsToRemove[] = $domElement; } foreach( $domElemsToRemove as $domElement ){ $domElement->parentNode->removeChild($domElement); } ?> --was-- You can't remove DOMNodes from a DOMNodeList as you're iterating over them in a foreach loop. For example... $domNodeList = $domDocument->getElementsByTagname('p'); foreach ( $domNodeList as $domElement ) { ...do stuff with $domElement... $domElement->parentNode->removeChild($domElement); } ... will seemingly leave the internal iterator on the foreach out of wack and results will be quite strange. Though, making a queue of items to remove seems to work. For example... $domNodeList = $domDocument->getElementsByTagname('p'); $domElemsToRemove = array(); foreach ( $domNodeList as $domElement ) { ...do stuff with $domElement... $domElemsToRemove[] = $domElement; } foreach( $domElemsToRemove as $domElement ){ $domElement->parentNode->removeChild($domElement); } http://php.net/manual/en/domnode.removechild.php

« previous php.notes (#153311) next »