Sorting array by key

I have data in following format

<?php

$students = array(
    '1' => array(
        'name' => 'Raj',
        'marks' => 9
    ),
    '2' => array(
        'name' => 'Sam',
        'marks' => '7'
    ),
    '3' => array(
        'name' => 'Alex',
        'marks' => '1'
    ),
    '4' => array(
        'name' => 'Tom',
        'marks' => '3'
    ),
    '5' => array(
        'name' => 'Sanil',
        'marks' => '10'
    ),
    '6' => array(
        'name' => 'Bill',
        'marks' => '4'
    ),
    '7' => array(
        'name' => 'Balmer',
        'marks' => '5'
    ),
    '8' => array(
        'name' => 'Steevan',
        'marks' => '8'
    ),
    '9' => array(
        'name' => 'Rachel',
        'marks' => '6'
    ),
    '10' => array(
        'name' => 'Rossy',
        'marks' => '2'
    )
);


I need the array sorted by “marks”.

How can i do this ?

Thanks,

Santhosh

Use usort (user defined sort) and define your own comparison function:

function cmp($array1, $array2) {
    if ($array1 == $array2) return 0;
    return ($array1['marks'] < $array2['marks']) ? -1 : 1;
}

usort($students, "cmp");

You should also stick with defining the marks values numerically – you switched to strings after the first one, and lexical order is not always the same as numeric order.