Outbook

HTML+CSS+JS, Accesibilidad, PHP y más

Inicio que contiene a Desarrollo web que contiene a PHP que contiene a PHP: Separar elementos de array por sus iniciales

Datos de búsqueda

PHP: Separar elementos de array por sus iniciales

He creado una sencilla función que devolverá los elementos de un array separados por sus letras iniciales.

En primer lugar habría que definir el array:

$lista = array(
	'Assassin\'s Creed',
	'Assassin\'s Creed II',
	'Command & Conquer: Red Alert 3',
	'Call of Duty: World at War',
	'Bayonetta',
	'Dragon Age: Origins',
	'50 Cent: Blood on the Sand',
	'Mini Ninjas',
	'Wipeout HD',
	'Valkyria Chronicles'
);

Y después llamar a la función:

listadoAlfabetico($lista);

La función sería la siguiente:

function listadoAlfabetico ($lista) {
 
 foreach (range('A', 'Z') as $letter) {
  $iniciales[] = $letter;
  // Añadimos letras que no están en el alfabeto inglés
  if ($letter=='C') {$iniciales[] = 'Ç';}
  if ($letter=='N') {$iniciales[] = 'Ñ';}
 }
 
 $i=0;$eliminar = array();
 while ($i<count($iniciales)) {
  $inicial = $iniciales[$i];
  
  $htmlLetra='';
  $j=0;$k=0; while ($j<count($lista)) {
   if ($lista[$j]{0}==$inicial or $lista[$j]{0}==strtolower($inicial)) {
    $htmlLetra .= '<li>'.$lista[$j].'</li>';
    $eliminar[] = $j;
    $k++;
   }
   $j++;
  }
  
  // Si hay elementos con la inicial actual se eliminan del array y se genera el HTML
  if ($k>0) {
   rsort($eliminar);
   $l=0; while ($l<count($eliminar)) {
    $lista = quitarElemento($lista, $eliminar[$l]);
    $l++;
   }
   
   $html .= '<p>'.$inicial.'</p><ul>'.$htmlLetra.'</ul>';
  }
  $eliminar = array();
  $i++;
 }
 
 // Con el resto de elementos se saca el apartado del 0 al 9
 if (count($lista)>0) {
  $htmlLetra='';
  $m=0; while ($m<count($lista)) {
   $selTag='span'; if ($_GET['cliente']==$lista[$m][0]) {$selTag='strong';}
   $htmlLetra .= '<li>'.$lista[$m].'</li>';
   $m++;
  }
  $html .= '<p>0-9</p><ul>'.$htmlLetra.'</ul>';
 }
 
 return $html;
}

function quitarElemento($elementos, $indice) { 
 if (is_array($elementos)) {
  unset($elementos[$indice]);
  if(gettype($indice)!="string") { 
   $listaTemporal=array(); 
   $i=0; 
   foreach ($elementos as $value) {
    $listaTemporal[$i]=$value;
    $i++;
   }
   $elementos=$listaTemporal;
  } 
  return $elementos;
 } 
 else {return false;}
}

Se puede ver el ejemplo o descargarlo (texto plano).

Comentarios del artículo

Los comentarios están cerrados.

Si el comentario no guarda relación con el tema del artículo o los comentarios previos, si la redacción del mismo es ilegible (estilo HOYGAN), o si contiene insultos u otros términos ofensivos, será borrado de inmediato. No se garantiza ningún soporte a los ejemplos de desarrollo web presentados en este sitio.

Todavía no hay comentarios.

Los comentarios están cerrados.

Información del sitio