niko42
Новичок
Мой алгоритма на примере объекта Категории:
PHP:
/**
* @see Возвращает ID всех детей родительской категории
* @param array(application\lib\Category) $category //массив категорий
* @param int $point //ID категории у которой требуется найти всех детей
* @return array(int)
*/
public static function childrenIdByCategory(array $category, $point){
$arr = array();
foreach($category as $v){/** @var \application\lib\Category $v */
$arr[$v->getParentId()][] = $v;
}
if(empty($arr[$point]))
return array($point);
$value = array($point);
$tmp = array($point);
$tmps = array();
for(;;){
if(!empty($tmp))
foreach($tmp as $t){
if(!empty($arr[$t])){
foreach($arr[$t] as $v){
$tmps[] = $v->getId();
$value[] = $v->getId();
}
}
$tmp = $tmps;
$tmps = null;
}
else{
break;
}
}
return $value;
}