public static function quicksort($arr, $field = 'label', $sort = 'asc') { if (count($arr) <= 1) { return $arr; } $piv = $arr[0]; $x = $y = array(); $len = count($arr); $i = 1; while ($i < $len) { if ($sort == 'asc' && $arr[$i][$field] <= $piv[$field]) { $x[] = $arr[$i]; } else { if ($sort == 'desc' && $arr[$i][$field] > $piv[$field]) { $x[] = $arr[$i]; } else { $y[] = $arr[$i]; } } ++$i; } return array_merge(UtilsHelper::quicksort($x, $field, $sort), array($piv), UtilsHelper::quicksort($y, $field, $sort)); }