php цикл foreach, примененный к DomNodeList, пропускает элемент при добавлении

Я загружаю элементы со страницы с помощью php. Это работает почти. Единственное, что из всех якорных элементов, которые я пытаюсь загрузить, это дает мне только половину. Он пропускает каждый второй элемент. Вот некоторые из моих сценариев PHP

$div = @$doc->getElementById('topicList');

$anchs=$div->getElementsByTagName('a');
//echo $anchs->length;  it does have the correct length

$container = $doc->createElement("div");
$container->setAttribute('class', 'relative');foreach ($anchs as $anch){

$container->appendChild($anch);
}
/// /////////
$expDiv = $doc->createElement("div");
$expDiv->setAttribute('class', 'explanation_div');
$container->appendChild($expDiv);
echo utf8_decode(@$doc->saveXML($container));

Так что это только производит каждый второй элемент привязки, а не все.

Я пробовал это с циклом for, но это не разрешено в DomNodeList.

Я думаю, что это должно быть как-то связано с appendChild, и что он может добавить следующий к предыдущему или что-то в этом роде, но я не понимаю, как это сделать.

У кого-то была эта проблема раньше, или вы видите, что я делаю не так?
Помощь очень ценится!

0

Решение

Я решил это сейчас. Оказывается appendChild Метод выталкивает элемент списка, поэтому все элементы перемещаются назад на позицию. Это сработало:

for ( $i=0;$i<$anchs->length;){   // so don't increase $i
$anch=$anchs->item($i);

$container->appendChild($anch);
}
1

Другие решения

Других решений пока нет …