2

I would like to sort the following 2D array according the field year?

Array
(

[0] => Array
(
    [from] => 44.91
    [to] => 53.56
    [next] => 108.88
    [year] => 2011

), 
[1] => Array
(
    [from] => 44.44
    [next] => 53.16
    [year] => 2010

), 
[2] => Array
(
    [from] => 42.83
    [next] => 51.36
    [year] => 2012
)
);

So the desired result will be:

Array
(
[1] => Array
(
    [from] => 44.44
    [next] => 53.16
    [year] => 2010

), 
[0] => Array
(
    [from] => 44.91
    [to] => 53.56
    [next] => 108.88
    [year] => 2011

),
[2] => Array
(
    [from] => 42.83
    [next] => 51.36
    [year] => 2012
)
);
glarkou
  • 7,023
  • 12
  • 68
  • 118

2 Answers2

1

Have you tried using uasort()?

function cmp_year($a, $b) {
    if($a['year'] == $b['year']) return 0;
    return ($a['year'] < $b['year']) ? -1 : 1;
}

uasort($your_array, 'cmp_year');
Amber
  • 507,862
  • 82
  • 626
  • 550
1

You can use array_multisort().

foreach ($arr as $k => $v) {
  $years[$k] = $v['year'];
}

array_multisort($years, SORT_DESC, $arr);
flowfree
  • 16,356
  • 12
  • 52
  • 76