Sorting a Multidimensional Array

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Brian

    #1

    Sorting a Multidimensional Array

    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

    #2
    Re: Sorting a Multidimensiona l 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
    > multidimensiona l 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 multidimensiona l 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]

    Comment

    Working...