ID: 41758 Updated by: [EMAIL PROTECTED] Reported By: hedvall at gmail dot com -Status: Open +Status: Assigned Bug Type: Arrays related Operating System: Win2k SP4 PHP Version: 6CVS-2007-06-21 (snap) -Assigned To: +Assigned To: andrei
Previous Comments: ------------------------------------------------------------------------ [2007-06-21 10:19:30] hedvall at gmail dot com Description: ------------ According to the documentation for sort(), you must use i18n_loc_set_default() for sort() with SORT_LOCALE_STRING to work in PHP6. However, i18n_loc_set_default() is an undefined function. The documentation instead refers to locale_set_default(). When setting the locale to "sv_SE" (correct) the function returns false, but when setting it to "sv_PHP" (incorrect) the function returns true which is the wrong behavior. The example from locale_set_default() uses "pt_PT" which can be set, but when sorting the result turns out the wrong way. When using locale_get_default() it returns what was set with locale_set_default() even if that function turned it down by returning false. When later using sort() or asort() (or any other sort) with SORT_LOCALE_STRING the result is the same as a normal sort. Reproduce code: --------------- <?php //Code from the documentation for locale_set_default() // the list of the strings to sort $array = array( 'caramelo', 'cacto', 'caçada' ); // set our locale (Portuguese, in this case) locale_set_default('pt_PT'); // sort using the locale we previously set sort($array, SORT_LOCALE_STRING); print_r($array); ?> Expected result: ---------------- Array ( [0] => caçada [1] => cacto [2] => caramelo ) Actual result: -------------- Array ( [0] => cacto [1] => caramelo [2] => caçada ) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=41758&edit=1