0

If I have an array that looks like this:

$members = array(
array(
    'id'=>2,
    'name' => 'Bob',
    'status' => 1
    ),
array(
    'id'=>4,
    'name' => 'Fred',
    'status' => 1
    ),
array(
    'id'=>5,
    'name' => 'Sally',
    'status' => 0
    ),
array(
    'id'=>1,
    'name' => 'Fred',
    'status' => 1
    ),
array(
    'id'=>3,
    'name' => 'Jane',
    'status' => 0
    ),
);

How can I sort the entries so that they show in alphabetical order by name?

TH1981
  • 2,835
  • 6
  • 40
  • 76

2 Answers2

0

You can define an own comparison function:

function cmp($a, $b)
{
    return strcmp($a['name'], $b['name']);
}

usort($myarray, "cmp");

More about sorting in PHP can be found in the PHP documentation

miken32
  • 35,483
  • 13
  • 81
  • 108
Pharaoh
  • 3,329
  • 4
  • 21
  • 43
0

Here we are using usort and strcmp for sorting a nested array. with strcmp we are comparing two strings.

Try this code snippet here

$array = array(
array(
    'id'=>2,
    'name' => 'Bob',
    'status' => 1
    ),
array(
    'id'=>4,
    'name' => 'Fred',
    'status' => 1
    ),
array(
    'id'=>5,
    'name' => 'Sally',
    'status' => 0
    ),
array(
    'id'=>1,
    'name' => 'Fred',
    'status' => 1
    ),
array(
    'id'=>3,
    'name' => 'Jane',
    'status' => 0
    ),
);

usort($array, function($data1,$data2){
    return strcmp($data1["name"], $data2["name"]);
});
print_r($array);
Sahil Gulati
  • 14,401
  • 4
  • 20
  • 39