4

I need to sort arrays inside an array of array based on one of the array's array value.

For example:

$data = array( array( 1, "Article One", 132, 12402773, 3 ),
               array( 2, "Article Two", 251, 12519283, 5 ),
               array( 3, "Article Three", 107, 12411321, 3 ),
               array( 4, "Article Four", 501, 12228135, 4 ) );

By default, if I print the 2nd element of each array:

  • Article One
  • Article Two
  • Article Three
  • Article Four

I need to sort it in a descending order by the 3rd element of the child-array.

So it would be like this:

  • Article Four
  • Article Two
  • Article One
  • Article Three

Because 501 > 251 > 132 > 107.

Any suggestion?

drowneath
  • 4,530
  • 9
  • 38
  • 56

2 Answers2

8

I typically use a usort() for this:

function compare($a, $b) {
    return ($a[2] > $b[2]);
}

usort($data, 'compare');
willoller
  • 6,556
  • 34
  • 59
2

array_multisort :)

Tor Valamo
  • 30,859
  • 10
  • 70
  • 79