Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/06/2014, 11:46
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: Problemas con la letra Ñ

Quizas te interese mirar este código que tambien admite acentos en la primer letra de los apellidos:

Código PHP:
Ver original
  1. <?php
  2.     // Codificado en ansi.    
  3.     $apellidos = [
  4.         "becerro",
  5.         "agusto",
  6.         "ñato",
  7.         "nebundi",
  8.         "Ñoco",
  9.         "alpolo",
  10.         "palon"
  11.     ];
  12.    
  13.     $indices = array_unique(
  14.                 array_map(function($val)
  15.                             { return mb_strtoupper(substr($val,0,1)); } // Con esta funcion, obtienes la primer letra del apellido en mayusculas. El resto es para automatizar y no es relevante.
  16.                           , $apellidos
  17.                         )
  18.                 );
  19.          
  20.     var_dump($indices);
  21.    
  22.     // Con esto lo ordenas correctamente.
  23.     uasort( $indices
  24.             , function($val1, $val2)
  25.                 {
  26.                     $val1 = str_replace("Ñ", "NN", strtr($val1,"ÀÈÌÒÙÁÉÍÓÚÄËÏÖÜ","AEIOUAEIOUAEIOU"));
  27.                     $val2 = str_replace("Ñ", "NN", strtr($val2,"ÀÈÌÒÙÁÉÍÓÚÄËÏÖÜ","AEIOUAEIOUAEIOU"));
  28.                     return strcasecmp($val1, $val2);
  29.                 }
  30.           );
  31.          
  32.     var_dump($indices);
  33.    
  34.     /*
  35.     array (size=5)
  36.       0 => string 'B' (length=1)
  37.       1 => string 'A' (length=1)
  38.       2 => string 'Ñ' (length=1)
  39.       3 => string 'N' (length=1)
  40.       6 => string 'P' (length=1)
  41.     array (size=5)
  42.       1 => string 'A' (length=1)
  43.       0 => string 'B' (length=1)
  44.       3 => string 'N' (length=1)
  45.       2 => string 'Ñ' (length=1)
  46.       6 => string 'P' (length=1)
  47.     */
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios