intval($arr_b[$i])) { return 1; } if (intval($arr_a[$i]) < intval($arr_b[$i])) { return -1; } } else { $cmp = strcmp(strval($arr_a[$i]), strval($arr_b[$i])); if (($cmp > 0) || ($cmp < 0)) { return $cmp; } } } if (cacti_count($arr_a) < cacti_count($arr_b)) { return 1; } if (cacti_count($arr_a) > cacti_count($arr_b)) { return -1; } return 0; } /** * usort_numeric - sorts two values numerically (ie. 1, 34, 36, 76) * * @param string $a * @param string $b * * @return int - '1' if $a is greater than $b, '-1' if $a is less than $b, or '0' if */ function usort_numeric(string $a, string $b) : int { if (intval($a) > intval($b)) { return 1; } if (intval($a) < intval($b)) { return -1; } else { return 0; } } /** * usort_alphabetic - sorts two values alphabetically (ie. ab, by, ef, xy) * * @param string $a * @param string $b * * @return int - '1' if $a is greater than $b, '-1' if $a is less than $b, or '0' if */ function usort_alphabetic(string $a, string $b) : int { return strcmp($a, $b); } /** * usort_natural - sorts two values naturally (ie. ab1, ab2, ab7, ab10, ab20) * * @param string $a * @param string $b * * @return int - '1' if $a is greater than $b, '-1' if $a is less than $b, or '0' if */ function usort_natural(string $a, string $b) : int { return strnatcmp($a, $b); } /** * sort_by_subkey - takes the list of templates and perform a final sort * * @param array $array * @param mixed $subkey * @param int $sort * * @return bool - The result of the sort operation */ function sort_by_subkey(array &$array, mixed $subkey, int $sort = SORT_ASC) : bool { $keys = []; foreach ($array as $subarray) { $keys[] = $subarray[$subkey]; } return array_multisort($keys, $sort, $array); }