php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #19850 sorting a String case-sensitive fails
Submitted: 2002-10-10 10:41 UTC Modified: 2002-11-17 20:15 UTC
Votes:1
Avg. Score:5.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:1 (100.0%)
Same OS:1 (100.0%)
From: akorthaus at web dot de Assigned:
Status: Not a bug Package: Arrays related
PHP Version: 4CVS-2002-10-10 OS: Linux + Windows
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: akorthaus at web dot de
New email:
PHP Version: OS:

 

 [2002-10-10 10:41 UTC] akorthaus at web dot de
I tried the following script to sort an Array case-sensitive:


<?php
$test = array("B",
              "a",
              "b",
              "A",
              "BB",
              "AA");
usort($test, 'strcasecmp');
print_r($test);
?>

What I expected to get was:

Array
(
    [0] => A
    [1] => a
    [2] => AA
    [3] => B
    [4] => b
    [5] => BB
)

What I got on Win2000/PHP 4.2.4-dev was:

Array
(
    [0] => A
    [1] => a
    [2] => AA
    [3] => b
    [4] => B
    [5] => BB
)

and using Linux with PHP 4.1.2 I got

Array
(
    [0] => a
    [1] => A
    [2] => AA
    [3] => B
    [4] => b
    [5] => BB
)

both is not correct. 


regards 

Andreas

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-10-27 19:56 UTC] sterling@php.net
it works for me:

Array
(
[0] => A
[1] => a
[2] => AA
[3] => b
[4] => B
[5] => BB
)

Which is exactly what you should get... and the algorithm is platform independent in CVS....
 [2002-11-17 07:01 UTC] akorthaus at web dot de
Sorry that I open it again, but what should be the sense of sorting an array like

Array
(
[0] => A
[1] => a
[2] => AA
[3] => b
[4] => B
[5] => BB
)

usort($test, 'strcasecmp'); 

should sort case-sensitive, that means a,A, b,B, c,C... but what is A,a, b,B??? There is no logical algorithm to sort this way. What is the next? c,C or C,c? How can I get a,A, b,B, c,C..., means _real_ case-sensitive?
 [2002-11-17 11:09 UTC] michael dot mauch at gmx dot de
You want to use natcasesort().

strcasecmp() compares strings case-_in_sensitively - that means that 
'A' =='a', so your usage of usort() does exactly what it should.
 [2002-11-17 20:15 UTC] sniper@php.net
See previous comment.

 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Sun Jul 13 08:01:32 2025 UTC