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