Re: Sorting arrays
| From: | Justin Patrin | Date: | Sun, 14 Dec 2003 07:55:25 +0000 |
| Subject: | Re: Sorting arrays | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-172668@lists.php.net to get a copy of this message | ||
Jake McHenry wrote:
It may be that because those are strings they are being sorted strangely. I have two suggestions. 1) Use a sub-associative array or an object for those entries. Delimited strings are ok, but actual structures are generally better. 2) use usort() and specify a function which sorts those dates correctly (sorting those won't sort by year, only month). OR you could convert those dates to UNIX timstamps (with strtotime() possibly) and sort them that way (this may also require using usort()). Try making an array with ONLY dates in it (not the extra info) and see if it sorts those correctly. One more thing: how are you passing these values between pages? -- paperCrane <Justin Patrin>-----Original Message----- From: Bronislav Klucka [mailto:Bronislav.Klucka@pro2-soft.com] Sent: Sunday, December 14, 2003 2:22 AM To: Jake McHenry Cc: 'Php-general' Subject: RE: [PHP] Sorting arrayschangingsuddnely sortedTry to explain a little bit more how the arrays could be sorted asscending and by hitting back and submitting formdescending... BronabackDoes anyone know of a way to keep sort from reversing thearray order?That is kinda fuzzy, let me explain. I have a couple arrays that I am sorting. If the user hits thebutton in their browser, and hits submit again withoutonly?anything, the array is sorted again, now in decending orderinstead ofascending as it was the first time around. The arrays contain dates, and I want them in ascending order. Is there a way to limit any of the sort routines to ascendingThis page is for adding / editing / removing airline reservations.Thanks, Jake McHenry Nittany Travel MIS Coordinator http://www.nittanytravel.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.phpseeingWhat I have done so far is when the user first gets to thisspecificpage, they enter their info. If they put a check in the add next flight checkbox, then the same form comes up again, eachtime addingthe new info to the same array, building upon the old info.The arraysare then displayed back into form fields where the user canedit anyinfo submitted. I'm sorting the arrays by the flight dates. Each time theuser entersa new flight, the array is sorted by date. This is where I'mthe problem. The first flight is fine, of course. Thesecond is fine.The third flight entered and all of the flights are now in reverseThe user doesn't even have to hit back, each time the form is submitted, the data is rearranged in opposite order. Too keep my data together, here is what the data in the arrays looks like: Array (order. Then the next flight entered, they're all in thecorrect order,etc, etc. This problem will most likely happen to my other arraysfurther on inthe project. Is there any way I can make sure that the dates are always in the correct order?I'm pretty confused.... so user puts information into form, he/she submits it, and you have 1 date, he press back button, fill the same form again submits form, new date is added and it's in correct order, he/she does it for the third and it's in reverse order, he/she does it for the fourth and it's in correct order... funny... could you paste here the sorting part of code? Brona[0] => 01-30-2004|Wilkes-Barre|PA|Salt Lake|UT||Yes|Yes [1] => 01-16-2004|Wilkes-Barre|PA|Salem|WA||Yes|Yes [2] => 01-02-2004|Wilkes-Barre|PA|Denver|CO||Yes|Yes [3] => 01-08-2004|Denver|CO|Wilkes-Barre|PA||No|No [4] => 01-23-2004|Salem|WA|Wilkes-Barre|PA||No|No [5] => 02-11-2004|Salt Lake|UT|Wilkes-Barre|PA||No|No) Then, in my script, after the new data is merged with the existing array, I sort: $array = $_SESSION['Air_Reservations']; sort($array) New output: Array ([0] => 02-11-2004|Salt Lake|UT|Wilkes-Barre|PA||No|No [1] => 01-23-2004|Salem|WA|Wilkes-Barre|PA||No|No [2] => 01-08-2004|Denver|CO|Wilkes-Barre|PA||No|No [3] => 01-02-2004|Wilkes-Barre|PA|Denver|CO||Yes|Yes [4] => 01-16-2004|Wilkes-Barre|PA|Salem|WA||Yes|Yes [5] => 01-30-2004|Wilkes-Barre|PA|Salt Lake|UT||Yes|Yes) See now? I didn't add a new record this time, but it happens with our without adding anything new. Each time the array is sorted, this happens. Thanks, Jake