Re: sorting array by keys?
| From: | Jeffry Killen | Date: | Wed, 21 Oct 2015 07:20:25 +0000 |
| Subject: | Re: sorting array by keys? | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-325215@lists.php.net to get a copy of this message | ||
On Oct 20, 2015, at 11:59 PM, Tolga wrote:
21.10.2015 09:50 tarihinde Jeffry Killen yazdı:Thank you for your response: In the interum, I found what is now working: uksort($_result['dirs'], 'strnatcmp'); JKHello; I have been consulting the manual and playing with a few different approaches to this; this comes the closest to what I want: function sortAlg($_a, $_b)its probably because of sorting algorithms checks char to char, first orders 1st char, then second, then .... , not by their numeric values. You first need to sort as you are doing now, then collect all the names with same starting letters into new array, (for your example, collect all names with starting 'lab_' into new array) then compare/sort new arrays with using filter_var($str, FILTER_SANITIZE_NUMBER_INT) therefore, you can sort names with numeric values on last step of sorting.{ return strcasecmp($_a, $_b); }; uksort($_result['dirs'], 'sortAlg');$_result['dirs'] is itself an array where the associative string keys are what I want to sort by. Everything works fine, accept I have a series of directories that follow the naming pattern 'lab_#' so, what happens with the sort is that the labs come out lab_0 lab_1 lab_10 ... etc... up to lab_13 then lab_2 lab_3 ... etc... up to lab_9 Am I going to have to code to find these cases and sort them as a separate array by keys? This is also coming out of Apache on a FreeBSD system. The sorting order appears to be creation date, as the last items created in this part of the file system appear last without any sorting. Without any sorting most of the lab_# names come out in the right order, but that is, I believe, because all of these directories and files were posted via ftp transfer at the same time. So, lab_0 through lab_8 come out in the right order, but lab_9 through lab_13 seem to appear according to subsequent creation date.