Пример кода из общедоступной библиотеки rusphp (фрагмент кода -- библиотеку ищите на гихабе):
/**
* Отсортирует массив (многомерный - массив массивов) по указанному полю
*
* @param type $arr
* @param type $keyName
*/
public static function sortByField(&$arr, $keyName) {
self::$sortByFieldName = $keyName;
usort($arr, "self::compareTwoFileds"); /** @see self::compareTwoFileds() */
}
/**
*
* @var string имя ключа поля, по которому производить сравнение подмасиивово (строк) массива
*/
private static $sortByFieldName = '';
/**
* Сравнит две строки массива -- на основе сравнения их элементов по ключу self::$sortByFieldName
*
* @param array $a первая строка массива
* @param array $b вторая строка массива
* @return int
* @throws Exception
*/
private static function compareTwoFileds($a, $b)
{
$result = 0;
if (isset($a[self::$sortByFieldName])
&& isset($b[self::$sortByFieldName])) {
$result = Str::compareAsInAlphbet($a[self::$sortByFieldName], $b[self::$sortByFieldName]);
} else {
throw new \Exception(' {ERROR} Theres NO filed with key ' . self::$sortByFieldName . ' !');
}
return $result;
}