Example #1
0
function sys_threadsort($fields, $level, &$result, $arr, $arr2)
{
    foreach ($fields as $field) {
        $field["tlevel"] = $level;
        if (!isset($result[$field["id"]])) {
            $result[$field["id"]] = $field;
        }
        if (isset($arr2[$field["id"]]) and count($arr2[$field["id"]]) > 0) {
            sys_threadsort($arr2[$field["id"]], $level + 1, $result, $arr, $arr2);
        }
    }
}
Example #2
0
 static function threadsort($arr)
 {
     $arr2 = array();
     foreach ($arr as $key => $value) {
         $arr[$key]["sorting"] = $key;
     }
     uasort($arr, "sys_threadsort_cmp");
     foreach ($arr as $value) {
         $arr2[$value["pid"]][] = $value;
     }
     $result = array();
     sys_threadsort($arr, 0, $result, $arr, $arr2);
     $last_sort = 0;
     $elems = count($result);
     foreach ($result as $key => $resultitem) {
         if ($resultitem["tlevel"] == 0) {
             $last_sort = $resultitem["sorting"] * $elems;
         } else {
             $last_sort++;
         }
         $result[$key]["sorting"] = $last_sort;
     }
     uasort($result, "sys_threadsort_cmp2");
     return array_values($result);
 }