I know that in php there are natsort () and natcasesort () functions for sorting array elements in natural order. I am trying to sort the following items.
array[0]= '10. xyz'; array[1]= '13. xyz'; array[2]= '2. xyz'; array[3]= '1a. xyz'; array[4]= '6. xyz'; array[5]= '1b. xyz'; array[6]= '4a. xyz'; array[7]= '4b. xyz';
now if i applied natsort (), '10 .. 'and '13 ..' are placed above '1a ..'. how can i make my php code think that "10 .." is greater than "1a ..." and "1a ..." should be at the top? correct conclusion in my particular case:
'1a. xyz'; '1b. xyz'; '2. xyz'; '4a. xyz'; '4b. xyz'; '6. xyz'; '10. xyz'; '13. xyz';
I used a custom algorithm, but it does the same ... it puts '10 .. 'in front of' 1a ... '. heres my custom func:
function cmp($a, $b) { $a_ex=explode(".",$a); $b_ex=explode(".",$b); if ($a_ex[0] == $b_ex[0] ) { return 0; } return ($a_ex[0] < $b_ex[0]) ? -1 : 1; }
samach
source share