Reputation: 26117
All,
I have the following array in array format. The JSON format is shown just for user-friendliness. How can I sort the array ascending with the key "name" in php?
"food":
[
{
"id": 1,
"name": "dessert"
},
{
"id": 2,
"name": "maincourse"
},
{
"id": 3,
"name": "entrees"
},
{
"id": 4,
"name": "appetizers"
}
]
The desired result is an array like this:
"food":
[
{
"id": 4,
"name": "appetizers"
},
{
"id": 1,
"name": "dessert"
},
{
"id": 3,
"name": "entrees"
},
{
"id": 2,
"name": "maincourse"
}
]
Upvotes: 1
Views: 188
Reputation: 25060
Use usort()
:
$array = array('food' => array(
array(
"id"=> 1,
"name"=> "dessert"
),
array(
"id"=> 2,
"name"=> "maincourse"
),
array(
"id"=> 3,
"name"=> "entrees"
),
array(
"id"=> 4,
"name"=> "appetizers"
)
)
);
function compare($a, $b) {
return strcmp($a['name'], $b['name']);
}
usort($array['food'], 'compare');
print_r($array);
Upvotes: 5
Reputation: 13462
You can use the ksort() function (php.net/ksort)
ksort($array);
For example if you have an array:
$array = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($array);
It will sort them as a,b,c,d.
Upvotes: 0