Хлебные крошки рекурсивно из категорий в xml

M9
На сайте с 15.05.2014
Offline
79
1098

О рекурсии я знаю не очень много, но думаю так можно получить нужный результат с меньшим кодом. Есть xml с категориями:

<CatalogPackage>

<Category>
<Names>
<Name Language="ru">Одежда</Name>
</Names>
<Children>
<Category IsParentOnProvider="true">
<ExternalId>16</ExternalId>
<Names>
<Name Language="ru">Женская одежда</Name>
</Names>
<Children>
<Category>
<ExternalId>50010850</ExternalId>
<Names>
<Name Language="ru">Платья, сарафаны</Name>
</Names>
<Children>
<Category>
<ExternalId>5678</ExternalId>
<Names>
<Name Language="ru">Сарафаны</Name>
</Names>
</Category>
</Children>
</Category>
</Children>
</Category>
</Children>
</Category>

<Category>
<Names>
<Name Language="ru">Обувь</Name>
</Names>
<Children>
<Category IsParentOnProvider="true">
<ExternalId>569</ExternalId>
<Names>
<Name Language="ru">Женская обувь</Name>
</Names>
<Children>
<Category>
<ExternalId>50012027</ExternalId>
<Names>
<Name Language="ru">Туфли</Name>
</Names>
</Category>
</Children>
</Category>
</Children>
</Category>
</CatalogPackage>

Возможно ли из этого файла, получит хлебные крошки, независимо от вложенности, передав функции id категории? Например я делаю так:


$languages = simplexml_load_file("categories.xml");
function crumitem($json,$catid){
if(isset($json->Children)){
foreach($json->Children->Category as $valueperent){
echo $valueperent->Names->Name.'<br />';
}
}else{
foreach($json->Category as $value){
echo '-'.$value->Names->Name.'<br />';
foreach($value->Children->Category as $valueperent){
echo '--'.$valueperent->Names->Name.'<br />';
crumitem($valueperent,$catid);
}
}
}
}
crumitem($languages,569); // Обувь > Женская обувь

и функция работает только до 3 уровня, и то не могу получать хлебные крошки помогите строит хлебные крошки народ.

ДП
На сайте с 23.11.2009
Offline
203
#1

Работает до 3 уровня, а потом что порисходит? с Ошибкой вылеает или что?

Если дебаггером не умеете пользоваться - наставьте print_r() тогда и выводите данные на каждом шаге и смотрите, что у вас и где.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий