Вопрос по SimpleXML

g200

Новичок
Подскажите почему скрипт не проходит по всем тэгам "length" в xml файле... Он выводит только первый и ошибку.

XML-файл:

Код:
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<catalogue>
<FILM_1_NAME>
<name>FILM_NAME</name>
<packages>
<_pack1>shared
<includes>
<cd>_cd_name_<length>60.0</length></cd>
<cd>_cd_name_<length>80.0</length></cd>
<book>_book_name_<length>0.0</length></book>
</includes>
</_pack1>
<_pack2>shared
<includes>
<misc>_misc_name_<length>5.0</length></misc>
<book>_book_name_<length>0.0</length></book>
</includes>
</_pack2>
<_pack3>shared
</_pack3>
</packages>
</FILM_1_NAME>
<FILM_2_NAME>
<name>FILM_NAME</name>
<packages>
<_pack1>shared
</_pack1>
<_pack2>shared
<cd>_cd_name_<length>30.0</length></cd>
</_pack2>
</packages>
</FILM_2_NAME>
</catalogue>
</root>
Скрипт обработки:

Код:
<?php

$xml=simplexml_load_file("cat.xml");

$cat_array=array();

for($y=0,$i=0;$y<($xml->catalogue->children()[0]->packages->children()[$y]->includes->cd->count()),$i<($xml->catalogue->children()[0]->packages->children()->count());$y++,$i++) {

if(!empty($xml->catalogue->children()[0]->packages->children()[$i]->includes->cd[$y])) {

$cat_array[$y]=$xml->catalogue->children()[0]->packages->children()[$i]->includes->cd[$y]->length;

}

echo $cat_array[$y]."<br />"."y: ".$y."<br />"." x: ".$i;
}
?>
Результат:

60.0
y: 0
x: 0
Notice: Undefined offset: 1 in C:\localweb\index.php on line 15

y: 1
x: 1
Fatal error: Call to a member function count() on a non-object in C:\localweb\index.php on line 7
 

Adelf

Administrator
Команда форума
потому что второй includes такой:
Код:
<includes>
<misc>_misc_name_<length>5.0</length></misc>
<book>_book_name_<length>0.0</length></book>
</includes>
Там нет тегов "cd"
 
Сверху