ID:               32219
 Updated by:       [EMAIL PROTECTED]
 Reported By:      php-france at mattoug dot net
-Status:           Bogus
+Status:           Verified
-Bug Type:         Arrays related
+Bug Type:         Feature/Change Request
 Operating System: *
 PHP Version:      4CVS-2005-03-09
 New Comment:

Saying that something is supported in PHP 5 isn't gonna make this
'feature' (or fix, IMO) end up in PHP 4. Backport it is.



Previous Comments:
------------------------------------------------------------------------

[2005-03-08 23:17:10] [EMAIL PROTECTED]

No bug here, PHP 4 never had support for sorting locale based. I added
this function to PHP 5.0.2 to support it.

------------------------------------------------------------------------

[2005-03-08 23:11:54] [EMAIL PROTECTED]

It's a bug if *sort() functions can't handle locales correctly.


------------------------------------------------------------------------

[2005-03-07 23:49:57] [EMAIL PROTECTED]

No bug here, the functions don't understand locales unless you add as
second "sort-flag" parameter SORT_LOCALE_STRING to asort(). This option
is introduced in PHP 5.0.2.

The following works fine (if you have the fr_FR locale installed):

<?php
setlocale(LC_ALL, 'fr_FR');
$table = array("AB" => "Alberta",
"BC" => "Colombie-Britannique",
"MB" => "Manitoba",
"NB" => "Nouveau-Brunswick",
"NL" => "Terre-Neuve-et-Labrador",
"NS" => "Nouvelle-Écosse",
"ON" => "Ontario",
"PE" => "Île-du-Prince-Édouard",
"QC" => "Québec",
"SK" => "Saskatchewan",
"NT" => "Territoires du Nord-Ouest",
"NU" => "Nunavut",
"YT" => "Territoire du Yukon");
asort($table, SORT_LOCALE_STRING);
var_dump($table);


------------------------------------------------------------------------

[2005-03-07 19:31:22] [EMAIL PROTECTED]

With what locale do you expect that output?


------------------------------------------------------------------------

[2005-03-07 14:00:09] php-france at mattoug dot net

Description:
------------
Accented characters are not properly sorted. For example, the right
sorting of "à" is between "a" and "b", for "é" it's between "e" and
"f", and so on...

Reproduce code:
---------------
$table = array("AB" => "Alberta",
               "BC" => "Colombie-Britannique",
               "MB" => "Manitoba",
               "NB" => "Nouveau-Brunswick",
               "NL" => "Terre-Neuve-et-Labrador",
               "NS" => "Nouvelle-Écosse",
               "ON" => "Ontario",
               "PE" => "Île-du-Prince-Édouard",
               "QC" => "Québec",
               "SK" => "Saskatchewan",
               "NT" => "Territoires du Nord-Ouest",
               "NU" => "Nunavut",
               "YT" => "Territoire du Yukon");
asort($table);

Expected result:
----------------
array(13) { ["AB"]=>  string(7) "Alberta" ["BC"]=>  string(20)
"Colombie-Britannique" ["PE"]=>  string(21) "Île-du-Prince-Édouard"
["MB"]=>  string(8) "Manitoba" ["NB"]=>  string(17) "Nouveau-Brunswick"
["NS"]=>  string(15) "Nouvelle-Écosse" ["NU"]=>  string(7) "Nunavut"
["ON"]=>  string(7) "Ontario" ["QC"]=>  string(6) "Québec" ["SK"]=> 
string(12) "Saskatchewan" ["NL"]=>  string(23)
"Terre-Neuve-et-Labrador" ["YT"]=>  string(19) "Territoire du Yukon"
["NT"]=>  string(25) "Territoires du Nord-Ouest"}

Actual result:
--------------
array(13) { ["AB"]=>  string(7) "Alberta" ["BC"]=>  string(20)
"Colombie-Britannique" ["MB"]=>  string(8) "Manitoba" ["NB"]=> 
string(17) "Nouveau-Brunswick" ["NS"]=>  string(15) "Nouvelle-Écosse"
["NU"]=>  string(7) "Nunavut" ["ON"]=>  string(7) "Ontario" ["QC"]=> 
string(6) "Québec" ["SK"]=>  string(12) "Saskatchewan" ["NL"]=> 
string(23) "Terre-Neuve-et-Labrador" ["YT"]=>  string(19) "Territoire
du Yukon" ["NT"]=>  string(25) "Territoires du Nord-Ouest" ["PE"]=> 
string(21) "Île-du-Prince-Édouard" }


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=32219&edit=1

Reply via email to