Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sort a set of multidimensional arrays by array elements

Let's say I've started here:

$arr[0] = array('a' => 'a', 'int' => 10);
$arr[1] = array('a' => 'foo', 'int' => 5);
$arr[2] = array('a' => 'bar', 'int' => 12);

And I want to get here:

$arr[0] = array('a' => 'foo', 'int' => 5);
$arr[1] = array('a' => 'a', 'int' => 10);
$arr[2] = array('a' => 'bar', 'int' => 12);

How can I sort the elements in an array by those elements' elements?

Multidimensional arrays always feel like a little bit more than my brain can handle (-_-) (until I figure them out and they seem super easy)

like image 388
Joseph Carrington Avatar asked Sep 08 '25 01:09

Joseph Carrington


1 Answers

Do you want to order them by the value of the "int" key ?

Use uasort with a callback function :

function compare_by_int_key($a, $b) {
    if ($a['int'] == $b['int']) {
        return 0;
    }
    return ($a['int'] < $b['int']) ? -1 : 1;
}
uasort($arr, "compare_by_int_key");
like image 86
mexique1 Avatar answered Sep 09 '25 23:09

mexique1