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 4 comments left Ir a comentario

  1. Pingback: Bitacoras.com /

  2. Pingback: BlogESfera.com /

  3. Andrew Mark /
    Usando Google Chrome Google Chrome 118.0.0.0 en Windows Windows NT

    This is excellent article, thank you for the share! This is what I am looking for, hope in future you will continue sharing such an superb work.
    Top Gun Jacket Maverick

  4. King338 /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    Thank you for this. Thats all I can say. You most definitely have made this into something thats eye opening and important. You clearly know so much about the subject, youve covered so many bases. Great stuff from this part of the internet. regards King338

Leave a Reply