• Как найти циклы в массиве?

    @ksnk
    Вот более оптимизированный говнокод ;)
    $array = [
        385 => 392,
        386 => 392,
        387 => 392,
        390 => 402,
        402 => 421,
        405 => 401,
        409 => 416,
        410 => 401,
        414 => 402,
        416 => 389,
        420 => 421,
        421 => 422,
        422 => 420,
    ];
    
    foreach ($array as $key => $value) {
        $level=0;
        $leaf=[$key=>$level]; $v=$value;
        while(true){
            if(!isset($array[$v])) break;
            $v=$array[$v];
            if(isset($leaf[$v])) {
                // loop found
                // is it real loop ?
                if($key==$v) {
                    printf("\n %s => %s", $key, $value);
                }
                break;
            }
            $leaf[$v]=++$level;
        }
    }
    Ответ написан
    2 комментария
  • Как добавить свою сортировку в CIBlockElement::GetList?

    @koder_1
    Битрикс программист
    Я бы сортировал элементы средствами php.

    Можно конечно придумать какое-нибудь дополнительное свойство, которое в элементах всех категорий кроме 20 равно 0, а в элементах 20 категории равно 1, и добавить сортировку по нему, но проще сортировать элементы средствами php.
    Ответ написан
    2 комментария