3

How can I sort an array based on two specific values within the array? For instance:

$arr = array(
             array('a' => array('field1' => 'Abc', 'field2' => 'Def'), 'b' => 0)
             array('a' => array('field1' => 'Ghi', 'field2' => 'Jkl'), 'b' => 0)
            );

I want to sort this array based on the $arr[$i]['a']['field1'] variable. How can I do that?

James Skidmore
  • 47,132
  • 31
  • 107
  • 135

3 Answers3

8

Give this a try:

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

uasort($arr, 'cmp');

This is just a slight alteration of the example provided on the PHP documentation page: http://www.php.net/manual/en/function.uasort.php

thetaiko
  • 7,748
  • 2
  • 32
  • 49
  • 1
    You _could_ however print the function down to 1 line: `return strcmp($a['field'],$b['field']);` – Wrikken Feb 29 '12 at 17:55
1

Create your own comparison function and use uasort

http://us.php.net/manual/en/function.uasort.php

SorcyCat
  • 1,208
  • 10
  • 19
1

in this particular case (sort on very first item of the very first subarray), simple sort() will be enough.

user187291
  • 52,425
  • 19
  • 93
  • 127