Reputation: 161
Ok guys, I have an php associative array in the following format .
groupdata: Array
(
[0] => Array
(
[id] => 3324
[name] => Testme2
[creationDate] => 31-MAR-14 04.18.29.618000 PM
)
[1] => Array
(
[id] => 3325
[name] => paris
[creationDate] => 31-MAR-14 06.43.28.291000 PM
)
[2] => Array
(
[id] => 3236
[name] => GL_HF
[creationDate] => 29-MAY-14 12.42.01.444000 PM
)
[3] => Array
(
[id] => 3251
[name] => attempting
[creationDate] => 24-FEB-14 03.47.54.732000 PM
)
[4] => Array
(
[id] => 3272
[name] => Testme
[creationDate] => 03-MAR-14 11.24.58.671000 AM
)
)
Now I want to sort this array based on their names. How can i achieve this ?
I have tried to use ksort/asort methods but it is not wroking.
The desired array is :
groupdata: Array
(
[0] => Array
(
[id] => 3251
[name] => attempting
[creationDate] => 24-FEB-14 03.47.54.732000 PM
)
[1] => Array
(
[id] => 3236
[name] => GL_HF
[creationDate] => 29-MAY-14 12.42.01.444000 PM
)
[2] => Array
(
[id] => 3325
[name] => paris
[creationDate] => 31-MAR-14 06.43.28.291000 PM
)
[3] => Array
(
[id] => 3272
[name] => Testme
[creationDate] => 03-MAR-14 11.24.58.671000 AM
)
[4] => Array
(
[id] => 3324
[name] => Testme2
[creationDate] => 31-MAR-14 04.18.29.618000 PM
)
)
Upvotes: 2
Views: 656
Reputation: 7948
Alternatively, you could use usort()
in conjunction to strtolower()
. Consider this example:
$groupdata = array(array('id' => 3324,'name' => 'Testme2','creationDate' => '31-MAR-14 04.18.29.618000 PM'),array('id' => 3325,'name' => 'paris','creationDate' => '31-MAR-14 04.18.29.618000 PM'),array('id' => 3236,'name' => 'GL_HF','creationDate' => '31-MAR-14 04.18.29.618000 PM'),array('id' => 3251,'name' => 'attempting','creationDate' => '31-MAR-14 04.18.29.618000 PM'),array('id' => 3272,'name' => 'Testme','creationDate' => '31-MAR-14 04.18.29.618000 PM'),);
function sorter($a, $b) {
if ($a['name'] == $b['name']){
return 0;
}
return strtolower($a['name']) < strtolower($b['name']) ? -1 : 1;
}
usort($groupdata, 'sorter');
Upvotes: 0
Reputation: 3274
Use usort, so you can define your own way to compare elements:
function cmp($a, $b) {
if ($a['name'] == $b['name']) {
return 0;
}
return ($a['name'] < $b['name']) ? -1 : 1;
}
usort($your_array, "cmp");
Upvotes: 0
Reputation: 11
$price = array();
foreach ($groupdata as $key => $row)
{
$price[$key] = $row['name'];
}
array_multisort($price, SORT_DESC, $groupdata);
Read more array_multisort()
Upvotes: 1