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
        )

)



Reply via email to