note 90292 modified in domnode.removechild by danbrown
| From: | danbrown@php.net | 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