Publi

Ordenación en PHP. Ordenar provincias, pero Madrid y Barcelona ponerlas primero.

En el desarrollo del registro de una página web para España, es normal que la mayoría de las personas vengan de Madrid, Barcelona, Valencia o Sevilla (las provincias podemos cambiarlas).

El algoritmo para ello, en PHP es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
$provincias = array ("Almería",   "Cádiz",       "Córdoba",  "Granada",     "Huelva",     "Jaén",           "Málaga",
"Huesca",    "Teruel",      "Zaragoza", "Asturias",    "Cantabria",  "Sevilla",        "Zamora",
"Ávila",     "Burgos",      "León",     "Palencia",    "Salamanca",  "Segovia",        "Soria",
"Albacete",  "Ciudad Real", "Cuenca",   "Guadalajara", "Toledo",
"Barcelona", "Girona",      "Lleida",   "Tarragona",   "Alicante",   "Castellón",      "Valencia",
"Badajoz",   "Cáceres",     "A Coruña", "Lugo",        "Ourense",    "Pontevedra",     "La Rioja",
"Murcia",    "Navarra",     "Álava",    "Guipúzcoa",   "Vizcaya",    "Islas Baleares", "Las Palmas",
"Santa Cruz de Tenerife",   "Ceuta",    "Melilla",     "Valladolid", "Madrid");

function ordena_provincias ($a, $b)
{
static $primeras = array ("Madrid", "Barcelona", "Valencia", "Sevilla");

$iaa = in_array($a, $primeras);
$iab = in_array($b, $primeras);

/* Si las dos provincias están en el array $primeras miramos en qué posición están */
if ( ($iaa) &amp;&amp; ($iab) )
{
$iaa = array_search($a, $primeras);
$iab = array_search($b, $primeras);

return ($iaa<$iab)?-1:1;
}
/* Si sólo está $a en el array $a va primero */
elseif ($iaa)
return -1;
/* Si sólo está $b, $b va después */
elseif ($iab)
return 1;
/* Si no está ninguna de las dos, miramos cuál va primero alfabéticamente */
else
return strcmp($a,$b);
}

sort($provincias);

print_r($provincias);

usort($provincias, 'ordena_provincias');
print_r($provincias);
?>

Primero se muestra el array de las provincias ordenadas por orden alfabético, y luego nuestra ordenación especial (con cuatro provincias como las primeras).

La ordenación la basamos en la función usort(), y como función de intercambio utilizará ordena_provincias() esta función tiene otro array con las provincias que deben ir primero.

También podría interesarte...

There are 2 comments left Ir a comentario

  1. Pingback: Bitacoras.com /

  2. Pingback: BlogESfera.com /

Leave a Reply