Connecting Tech Pros Worldwide Help | Site Map

Sorting a Multidimensional Array

Brian
Guest
 
Posts: n/a
#1: Jul 16 '05
I have an array like this:

$events = array(
array(
'2003-07-01',
'Event Title 1',
'1' //ID Number (not unique)
),
array(
'2003-07-02',
'Event Title 3',
'22'
),
array(
'2003-07-06',
'Event Title 3',
'35'
)
);


I want to sort it by date. How would I do it?

I read the documentation for usort(), but I can't get it to work right.
Any suggestions?
Brian
Guest
 
Posts: n/a
#2: Jul 16 '05

re: Sorting a Multidimensional Array


Thank you so much, Jason. I didn't understand what the extra function
was for until you posted that.

It works perfectly, now. Thanks again.


[color=blue]
>
> Sorting by date from the usort docs on php.net - sorting a
> multidimensional array:
>
> <begin>
> function cmp ($a, $b) {
> //return strcmp($a["fruit"], $b["fruit"]);
> // in the case of the above array
> // note we are comparing the first element of each array
> if ( $a[0] < $b[0] ) {
> return -1;
> }
> if ( $a[0] > $b[0] ) {
> return 1;
> }
> // they are equal
> return 0;
> }
>
> // we're using the array supplied above by Brian
> /*
> $fruits[0]["fruit"] = "lemons";
> $fruits[1]["fruit"] = "apples";
> $fruits[2]["fruit"] = "grapes";
> */
>
> // again, using data supplied by Brian
> usort($events, "cmp");
> //usort($fruits, "cmp");
> <end>
>
> This should sort the multidimensional array by the first element (index
> 0). Incidentally, you could make it sort in descending order by
> switching the 1 and -1 in the "cmp" function.
>
> Also, doing this in objects gets kind of tricky, read the user supplied
> notes, there's a lot of useful stuff in there.
>
> Jason
>
>[/color]

Closed Thread