#19795 [Com]: Problems with strnatcmp and strnatcasecmp
| From: | doc at nitramlexa dot com | Date: | Mon, 07 Oct 2002 11:00:22 +0000 |
| Subject: | #19795 [Com]: Problems with strnatcmp and strnatcasecmp | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-21699@lists.php.net to get a copy of this message | ||
ID: 19795
Comment by: doc@nitramlexa.com
Reported By: doc@nitramlexa.com
Status: Feedback
Bug Type: Strings related
Operating System: FreeBSD 4.6
PHP Version: 4.2.2
New Comment:
I am quite sure I did that yes. I set locale for LC_ALL and strftime is
working as it should.
If I understand the documentation correctly, this function should work
as strcmp except for the fact that numbers are sorted in a natural
order. And strcmp does sort as I expect.
usort using strcmp:
array(11) {
[0]=>
string(1) "1"
[1]=>
int(1)
[2]=>
string(2) "12"
[3]=>
string(1) "2"
[4]=>
string(1) "a"
[5]=>
string(1) "z"
[6]=>
string(1) ""
[7]=>
string(1) ""
[8]=>
string(1) "å"
[9]=>
string(1) "æ"
[10]=>
string(1) "ø"
}
using strnatcmp:
array(11) {
[0]=>
string(1) ""
[1]=>
string(1) ""
[2]=>
string(1) "å"
[3]=>
string(1) "æ"
[4]=>
string(1) "ø"
[5]=>
string(1) "1"
[6]=>
int(1)
[7]=>
string(1) "2"
[8]=>
string(2) "12"
[9]=>
string(1) "a"
[10]=>
string(1) "z"
}
Previous Comments:
------------------------------------------------------------------------
[2002-10-07 03:58:36] derick@php.net
Did you set-up your locales correctly?
Derick
------------------------------------------------------------------------
[2002-10-07 03:51:15] doc@nitramlexa.com
Characters with an ASCII value above 127 is considered to be the lower
value. This is a bit unfortunate if you use a language with special
characters (like the 3 danish letters after z in the list below).
$list = array('a', 1, '2', '12', '1', 'z',
'æ', 'ø', 'å', chr(137),
chr(128));
usort($list, 'strnatcmp');
var_dump($list);
The values above 127 are sorted correctly, they should just be
considered higher than A-z.
I believe I have seen this bug on a Solaris Unix as well. But that was
a while ago and I can not provide any detailed information on that
situation.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=19795&edit=1