Часто стал подниматься вопрос, и раз это всем помагает, сделаю в отдельной теме Код (PHP): <?php function order($array, $by) { $result = array(); foreach ($array as $val) { if (!is_array($val) || !key_exists($by, $val)) { continue; } end($result); $current = current($result); while ($current[$by] > $val[$by]) { $result[key($result)+1] = $current; prev($result); $current = current($result); } $result[key($result)+1] = $val; } return $result; } // Отсортировать по стобцу score $rating = array( array('name'=>'Vasya', 'score'=>152), array('name'=>'Igor', 'score'=>73), array('name'=>'Kolya', 'score'=>312), array('name'=>'Pavel', 'score'=>100), array('name'=>'Roman', 'score'=>429), array('name'=>'Alex', 'score'=>56) ); print_r(order($rating, 'score')); Это не самый быстрый вариант. Можно как сделать стандартными функциями сортировки, но не проверялось, как будет быстрее. На это решение пока никто не жаловался
PHP: // Отсортировать по стобцу score $rating = array( array('name'=>'Vasya', 'score'=>152), array('name'=>'Igor', 'score'=>73), array('name'=>'Kolya', 'score'=>312), array('name'=>'Pavel', 'score'=>100), array('name'=>'Roman', 'score'=>429), array('name'=>'Alex', 'score'=>56) ); $by = 'score'; usort($rating, function($first, $second) use( $by ) { if ($first[$by]>$second[$by]) { return 1; } elseif ($first[$by]<$second[$by]) { return -1; } return 0; }); print_r($rating);