PHP и SIMOLEXML удалить выборочные записи

mailmoney

Новичок
Здравствуйте. Есть обычный YML-файл.

PHP:
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="2011-09-05 16:56">
<shop>
<name>B</name>
<company>ООО </company>
<url>http://</url>
<currencies>
<currency id="RUR" rate="1"/>
</currencies>
<categories>**</categories>
<offers>
<offer id="1" available="false">
...
</offer>
<offer id="2" available="false">
...
</offer>
<offer id="3" available="false">
...
</offer>
</offers>
</shop>
Есть массив значений, например $a=array(1,3);
Нужно оставить только те offer в которых id= элементу массива.

Сделал так:
$offer - массив с элементами.
PHP:
$xml = simplexml_load_file($file1); // файл с данными xml
foreach ($xml->shop->offers->offer as $offer) 
	{
		if (in_array($offer['id'],$item)){}
		else
		{ 
		${'dom2'.$i}=dom_import_simplexml($offer); 
		$i=$i+1;
		}

	}	

for ($s=0;$s<$i;$s++){
${'dom2'.$s}->parentNode->removeChild(${'dom2'.$s});
}
echo $s;
$xml->asXml('updated.xml');
Результат - удаляет все офферы. Но если я поставлю ${'dom2'.$i}=dom_import_simplexml($offer); не в ELSE а выше, т.е. условие если присутствует -удалить его - работает, удаляет все нужные мне значения из файла.
Я не знаю или глюк, или еще что-то. И понимаю что код не совсем корректный, имена переменных создаю, но не нашел других вариантов. Может подскажете?
 

mailmoney

Новичок
Всё. Спасибо, решил проблему. Сделал исключение массивов (т.е. получил элементы которые необходимо удалить) и сделал тоже самое что выше написал
 
Сверху