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?

Yana D. Nugraha
  • 5,069
  • 10
  • 45
  • 59

2 Answers2

8

I typically use a usort() for this:

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

usort($data, 'compare');
willoller
  • 7,106
  • 1
  • 35
  • 63
2

array_multisort :)

Tor Valamo
  • 33,261
  • 11
  • 73
  • 81