On Thu, 13 Feb 2003, Sean Brown wrote: > Let's say I've got an array like so: > > $myarray[0]["firstname"] = "Mickey"; > $myarray[0]["lastname"] = "Mouse"; > $myarray[0]["score"] = 20; > > $myarray[1]["firstname"] = "Donald"; > $myarray[1]["lastname"] = "Duck"; > $myarray[1]["score"] = 10; > > I'd like be able to sort the array using different dimensions before I > cycle through a while loop to print out the results. For instance, by > lastname, or by score. I can't seem to get array_multisort() to do it.
array_multisort() isn't what you want. > Any ideas? I've seen this question too many times go through here w/ lots of links, and no code ... so here ya go. (And I think someone else asked a similar question today too ... you too, listen up ;) You can use the usort() function to your advantage. This is how: <?php // your $myarray definition here, unmodified $sortKey = "score"; function myCompare( $arrayA, $arrayB ){ global $sortKey; if( $arrayA[$sortKey] == $arrayB[$sortKey] ) return 0; return( $arrayA[$sortKey] < $arrayB[$sortKey] ? -1 : 1 ); } usort( $myarray, "myCompare" ); var_dump( $myarray ); ?> Obviously, you could sort by the other keys by changing the value of $sortKey, in the code above, or sort in reverse order by flipping the inequality comparison operator in myCompare(). http://www.php.net/manual/en/function.usort.php ... for all your usort() goodness. g.luck, ~Chris -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php