# How to sort an array based on a specific field in the array?

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?

## Here is Solutions:

We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.

### Solution 1

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

### Solution 2

Create your own comparison function and use uasort

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

### Solution 3

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

Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0