Skip to content
Advertisement

php array sorting with accents

I am using this to sort according to last name:

  usort($fb_friends['data'], "custom_sort");          
  function custom_sort($a,$b) { 
    return $a['last_name']>$b['last_name'];
  }

  foreach($fb_friends['data'] as $friend) { 
    echo '<br>'; 
    echo $friend['name']; 
  } 

But – when in last name is accent, e.g. Šiko, Áron, etc, these names are at the end. How can I sort it properly?

Advertisement

Answer

Use multi-byte string functions. There is a function called strcoll which seems to suit your needs.

More info:


EDIT: added Peter’s working code, below

setlocale(LC_COLLATE, 'sk_SK.utf8');

usort($fb_friends['data'], 'custom_sort');

function custom_sort($a, $b) {
    return strcoll ($a['last_name'], $b['last_name']);
}

foreach ($fb_friends['data'] as $friend) {
    echo '<br>';
    echo $friend['name'];
}
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement