Forum Moderators: coopster
I have 2 arrays that i have merged using array_merge, the contents of the arrays are in alphabetical order by the [name] field, when i merge the arrays i need to sort the new merged array too but cant seem to do it.
example:
array 1 [aid]=>4654 [name]=>green [loc]=>apple
array 1 [aid]=>7836 [name]=>yellow [loc]=>banana
array 1 [aid]=>2469 [name]=>red [loc]=>tomato
array 2 [aid]=>6711 [name]=>brown [loc]=>mud
array 2 [aid]=>1744 [name]=>pink [loc]=>flower
array 2 [aid]=>9328 [name]=>white [loc]=>snow
when merged i get
newarray [aid]=>4654 [name]=>green [loc]=>apple
newarray [aid]=>7836 [name]=>yellow [loc]=>banana
newarray [aid]=>2469 [name]=>red [loc]=>tomato
newarray [aid]=>6711 [name]=>brown [loc]=>mud
newarray [aid]=>1744 [name]=>pink [loc]=>flower
newarray [aid]=>9328 [name]=>white [loc]=>snow
where i need
newarray [aid]=>6711 [name]=>brown [loc]=>mud
newarray [aid]=>4654 [name]=>green [loc]=>apple
newarray [aid]=>1744 [name]=>pink [loc]=>flower
newarray [aid]=>2469 [name]=>red [loc]=>tomato
newarray [aid]=>9328 [name]=>white [loc]=>snow
newarray [aid]=>7836 [name]=>yellow [loc]=>banana
sorry if i dont make it clear
i have tried
function multi_sort($array, $key)
{
$cmp_val="((\$a['$key']>\$b['$key'])?1:
((\$a['$key']==\$b['$key'])?0:-1))";
$cmp=create_function('$a, $b', "return $body;");
uasort($array, $cmp);
return $array;
}
multi_sort($mymergedarray, "name");
which i found on a search but this doesnt seem to work either
Thanks for any help
$array2[0]['aid']='6711';
$array2[0]['name']= 'brown';
$array2[0]['loc']= 'mud';
$array2[1]['aid']= '1744';
$array2[1]['name']= 'pink';
$array2[1]['loc']= 'flower';
$array2[2]['aid']= '9328';
$array2[2]['name']= 'white';
$array2[2]['loc'] = 'snow';
you should be able to just use PHP's built in array_multisort function
foreach ($array as $key) {
$aid[] = $key["aid"];
$name[] = $key["name"];
$loc[] = $key["loc"];
}
array_multisort($name, SORT_ASC, SORT_STRING, $aid, SORT_ASC, SORT_STRING, $loc, SORT_ASC, SORT_STRING, $array);
print_r($array);