Usort

From: Date: Thu, 03 Apr 2003 21:53:18 +0000
Subject: Usort
Groups: php.general 
Request: Send a blank email to php-general+get-142200@lists.php.net to get a copy of this message
This email is long I apologize for that. It is my code and then what it returns and what I am wanting it to return. I don't think I understand how USORT works or even if I am using the right function for what I am looking for. Thanks in advance for your help Jonathan Pitcher ################################################### Begin Code ################################################### I have a multilevel array: $EA = array(); $EA[0]["STARTDATE"] = "2003:03:01"; $EA[0]["ENDDATE"] = "2003:03:01"; $EA[0]["STARTTIME"] = "7:30"; $EA[0]["ENDTIME"] = "8:30"; $EA[1]["STARTDATE"] = "2003:02:01"; $EA[1]["ENDDATE"] = "2003:03:01"; $EA[1]["STARTTIME"] = "7:30"; $EA[1]["ENDTIME"] = "8:30"; $EA[2]["STARTDATE"] = "2003:03:01"; $EA[2]["ENDDATE"] = "2003:03:01"; $EA[2]["STARTTIME"] = "8:30"; $EA[2]["ENDTIME"] = "9:30"; $EA[3]["STARTDATE"] = "2003:03:01"; $EA[3]["ENDDATE"] = "2003:03:01"; $EA[3]["STARTTIME"] = "7:30"; $EA[3]["ENDTIME"] = "8:30"; $EA[4]["STARTDATE"] = "2003:03:01"; $EA[4]["ENDDATE"] = "2003:03:02"; $EA[4]["STARTTIME"] = "7:30"; $EA[4]["ENDTIME"] = "8:30"; usort($EA, "compareall"); print_r($EA); function compareall($A, $B) { if ($A["STARTDATE"] < $B["STARTDATE"]) { return 4; } else if ($A["STARTTIME"] < $B["STARTTIME"]) { return 3; } else if ($A["ENDDATE"] > $B["ENDDATE"]) { return 2; } else if ($A["ENDTIME"] > $B["ENDTIME"]) { return 1; } else if ($A["STARTDATE"] > $B["STARTDATE"]) { return -4; } else if ($A["STARTIME"] > $B["STARTTIME"]) { return -3; } else if ($A["ENDDATE"] < $B["ENDDATE"]) { return -2; } else if ($A["ENDTIME"] < $B["ENDTIME"]) { return -1; } else { return 0; } } This prints: Array (
    [0] => Array
        (
            [STARTDATE] => 2003:03:01
            [ENDDATE] => 2003:03:01
            [STARTTIME] => 7:30
            [ENDTIME] => 8:30
        )
    [1] => Array
        (
            [STARTDATE] => 2003:03:01
            [ENDDATE] => 2003:03:01
            [STARTTIME] => 7:30
            [ENDTIME] => 8:30
        )
    [2] => Array
        (
            [STARTDATE] => 2003:03:01
            [ENDDATE] => 2003:03:02
            [STARTTIME] => 7:30
            [ENDTIME] => 8:30
        )
    [3] => Array
        (
            [STARTDATE] => 2003:02:01
            [ENDDATE] => 2003:03:01
            [STARTTIME] => 7:30
            [ENDTIME] => 8:30
        )
    [4] => Array
        (
            [STARTDATE] => 2003:03:01
            [ENDDATE] => 2003:03:01
            [STARTTIME] => 8:30
            [ENDTIME] => 9:30
        )
) I want it to print this: Array (
    [0] => Array
        (
            [STARTDATE] => 2003:02:01
            [ENDDATE] => 2003:03:01
            [STARTTIME] => 7:30
            [ENDTIME] => 8:30
        )
    [1] => Array
        (
            [STARTDATE] => 2003:03:01
            [ENDDATE] => 2003:03:01
            [STARTTIME] => 7:30
            [ENDTIME] => 8:30
        )
    [2] => Array
        (
            [STARTDATE] => 2003:03:01
            [ENDDATE] => 2003:03:01
            [STARTTIME] => 7:30
            [ENDTIME] => 8:30
        )
    [3] => Array
        (
            [STARTDATE] => 2003:03:01
            [ENDDATE] => 2003:03:01
            [STARTTIME] => 8:30
            [ENDTIME] => 9:30
        )
    [4] => Array
        (
            [STARTDATE] => 2003:03:01
            [ENDDATE] => 2003:03:02
            [STARTTIME] => 7:30
            [ENDTIME] => 8:30
        )
)

« previous php.general (#142200) next »