Clancy schreef:
> I have been experimenting using four character alphanumeric keys on an array, 
> and when I
> generated a random set of keys, and then used ksort to sort the array, I was 
> very
> surprised to find that if the key contained any non-numeric character, or if 
> it started
> with zero, the key was sorted as a base 36 number (0- 9, A-Z, as I expected. 
> However if
> the key only contained numbers, and did not start with zero, it was sorted to 
> the end of
> the list.

did your experiment include reading the manual? or did you expect ksort() to 
known what
kind of sort you wanted? ... try specifying a sort flag:

<?php

$r = array(
    'ASDF' => true,
    '000A' => true,
    '0009' => true,
    '0999' => true,
    '0000' => true,
    '09A0' => true,
    '9999' => true,
    '1000' => true,
    'ZZZZ' => true,
);

echo "UNSORTED:\n";
print_r($r);

echo "SORT_REGULAR:\n";
ksort($r, SORT_REGULAR);
print_r($r);

echo "SORT_NUMERIC:\n";
ksort($r, SORT_NUMERIC);
print_r($r);

echo "SORT_STRING:\n";
ksort($r, SORT_STRING);
print_r($r);


> 
> Thus:
>       0000
>       0009
>       000A
> 
>       0999
>       09A0
>       ASDF
> 
>       ZZZZ
>       1000
>       9999
> 
> I presume this is related to last weeks discussions about casting variables, 
> but I cannot
> understand why 0999 should go to the start of the list, while 1000 goes to 
> the end. Can
> anyone explain this logically?
> 


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to