0

I am trying to sort an array, but by default I can only get it sorted by the record number.

i.e. the array looks like this for example

array(0=array('id','username'), 1=array('id','username'));

if I try to sort it, it sorts by the 0 and 1 values, I cannot get it to sort into the id & username array.

How can i sort the main array acording to the username in the child arrays?

Marcel
  • 874
  • 1
  • 14
  • 28
  • 1
    Possible duplicate of [Sort Multi-dimensional Array by Value](http://stackoverflow.com/questions/2699086/sort-multi-dimensional-array-by-value) – whitwhoa Nov 06 '15 at 21:01

1 Answers1

0

Here is what you need to do,

Sorting using ids

$a = array(array('idC','usernameC'), array('idA','usernameA'), array('idB','usernameB'));
$id = array();
foreach ($a as $key => $row)
{
    $id[$key] = $row[0];
}
array_multisort($id, SORT_ASC, $a);

print_r($a);

will output

Array
(
[0] => Array
    (
        [0] => idA
        [1] => usernameA
    )

[1] => Array
    (
        [0] => idB
        [1] => usernameB
    )

[2] => Array
    (
        [0] => idC
        [1] => usernameC
    )

)

Demo

Mubin
  • 4,325
  • 5
  • 33
  • 55