gaalgergely
gaalgergely

Reputation: 113

ksort($data,SORT_STRING); does not work

My input data ($data):

array:45 [▼
  "Ajka" => array:5 [▶]
  "Budapest XX-XXI. kerület" => array:5 [▶]
  "Békéscsaba" => array:5 [▶]
  "Debrecen" => array:5 [▶]
  "Dunaújváros - Szászhalombatta" => array:4 [▶]
  "Győr" => array:5 [▶]
  "Hatvan" => array:5 [▶]
  "Kaposvár" => array:5 [▶]
  "Kiskunhalas" => array:5 [▶]
  "Miskolc - Tiszaújváros" => array:5 [▶]
  "Nagykanizsa" => array:5 [▶]
  "Nyíregyháza" => array:5 [▶]
  "Pécs - Komló" => array:4 [▶]
  "Székesfehérvár" => array:5 [▶]
  "Tatabánya" => array:5 [▶]
  "Tököl" => array:2 [▶]
  "Vecsés, Gyál" => array:3 [▶]
  "Veszprém" => array:5 [▶]
  "Várpalota" => array:3 [▶]
  "Zalaegerszeg" => array:4 [▶]
  "Érd" => array:2 [▶]
]

I use this function to reorder the elements of the array:

ksort($data,SORT_STRING);

But the result of the function is the same:

array:45 [▼
  "Ajka" => array:5 [▶]
  "Budapest XX-XXI. kerület" => array:5 [▶]
  "Békéscsaba" => array:5 [▶]
  "Debrecen" => array:5 [▶]
  "Dunaújváros - Szászhalombatta" => array:4 [▶]
  "Győr" => array:5 [▶]
  "Hatvan" => array:5 [▶]
  "Kaposvár" => array:5 [▶]
  "Kiskunhalas" => array:5 [▶]
  "Miskolc - Tiszaújváros" => array:5 [▶]
  "Nagykanizsa" => array:5 [▶]
  "Nyíregyháza" => array:5 [▶]
  "Pécs - Komló" => array:4 [▶]
  "Székesfehérvár" => array:5 [▶]
  "Tatabánya" => array:5 [▶]
  "Tököl" => array:2 [▶]
  "Vecsés, Gyál" => array:3 [▶]
  "Veszprém" => array:5 [▶]
  "Várpalota" => array:3 [▶]
  "Zalaegerszeg" => array:4 [▶]
  "Érd" => array:2 [▶]
]

But I expect this to Érd to be removed upper in the result list:

array:45 [▼
  "Ajka" => array:5 [▶]
  "Budapest XX-XXI. kerület" => array:5 [▶]
  "Békéscsaba" => array:5 [▶]
  "Debrecen" => array:5 [▶]
  "Dunaújváros - Szászhalombatta" => array:4 [▶]
  "Érd" => array:2 [▶]
  "Győr" => array:5 [▶]
  "Hatvan" => array:5 [▶]
  "Kaposvár" => array:5 [▶]
  "Kiskunhalas" => array:5 [▶]
  "Miskolc - Tiszaújváros" => array:5 [▶]
  "Nagykanizsa" => array:5 [▶]
  "Nyíregyháza" => array:5 [▶]
  "Pécs - Komló" => array:4 [▶]
  "Székesfehérvár" => array:5 [▶]
  "Tatabánya" => array:5 [▶]
  "Tököl" => array:2 [▶]
  "Vecsés, Gyál" => array:3 [▶]
  "Veszprém" => array:5 [▶]
  "Várpalota" => array:3 [▶]
  "Zalaegerszeg" => array:4 [▶]  
]

What do I do wrong? 'Érd' should be moved upper in the result list. Cheers

Upvotes: 1

Views: 262

Answers (1)

gaalgergely
gaalgergely

Reputation: 113

In my case the right solution what worked for me is this:

setlocale(LC_COLLATE, 'hu_HU.utf8');
uksort($data,'strcoll');

Upvotes: 1

Related Questions