2012-03-11 26 views
6

estoy usando esto para ordenar según el apellido:matriz PHP clasificación con acentos

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']; 
    } 

Pero - cuando en el apellido es el acento, por ejemplo, Šiko, Áron, etc., estos nombres están al final. ¿Cómo puedo ordenarlo correctamente?

Respuesta

11

Utilice funciones de cadenas de varios bytes. Existe una función llamada strcoll que parece satisfacer sus necesidades.

Más información:


EDIT: agrega código de trabajo de Pedro, a continuación

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']; 
} 
+0

gracias! esto funciona para mí: 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'] como $ friend) { echo '
'; echo $ friend ['name']; } – peter

+0

¿Qué ocurre si las cadenas forman parte de una matriz de columnas múltiples y queremos ordenarlas en varias columnas? – Pierre

Cuestiones relacionadas