1

I have an array like this:

$country = array(
                    "Afrique du Sud",
                    "Mexique",
                    "Pays-Bas",
                    "Îles Cook",
                    "États-Unis",
                    "Émirats arabes unis",
                    "Viêt Nam"
                );

I want to sort this array and I am doing like this:

sort($country);

I am getting the result as following:

Array ( [0] => Afrique du Sud [1] => Mexique [2] => Pays-Bas [3] => Viêt Nam [4] => Émirats arabes unis [5] => États-Unis [6] => Îles Cook ) 

But I am expecting:

Array ( [0] => Afrique du Sud [1] => Émirats arabes unis [2] => États-Unis [3] => Îles Cook [4] => Mexique [5] => Pays-Bas [6] => Viêt Nam   ); 

How can achieve my expected result?

Aju John
  • 2,214
  • 1
  • 10
  • 27
  • 1
    http://stackoverflow.com/a/3650743/4431269 –  Sep 27 '16 at 10:13
  • 1
    you need to add just two line ,[1]. setlocale(LC_COLLATE, 'nl_BE.utf8'); [2].usort($country, 'strcoll'); this line add to you can get your desire output. – Rax Shah Sep 27 '16 at 10:22

1 Answers1

3

You should use The Collator class for such cases.

Requirement: (PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Description: Provides string comparison capability with support for appropriate locale-sensitive sort orderings.

$collator = new Collator('en_US');
$collator->sort($country);
Indrasis Datta
  • 8,692
  • 2
  • 14
  • 32