Índice de contenidos
Instalación en Windows
Instalación en Ubuntu
Servidores seguros
Páginas dinámicas
Sintaxis básica
Operaciones
Arrays
Formatos de presentación
Operadores
Bucles
Extraer y ord. información
Funciones
Ficheros externos
Imágenes dinámicas
Gestión de directorios
Cookies y sesiones
Clases y objetos
Ficheros en formato PDF
Bases de datos MySQL
PHP y XML
PDO - Bases SQLite / MySQL
MySQL a traves de misqli
Algo de JavaScript y AJAXOrdenaciones de arrays
Los elementos de un array se van ordenando según se van definiendo. Por tanto, su orden no es el mismo que el de los valores de sus índices. Las funciones PHP que ordenan los elementos de un array permiten dos opciones. Con una de ellas es posible la ordenación de los elementos sin modificar los valores de los índices, mientras que la otra sí modifica los índices. En el segundo de los casos la modificación puede afectar incluso al tipo de índices dado que los resultados de las ordenaciones –tanto si hemos partido de un array escalar como si lo hemos hecho desde uno asociativo– es siempre un array escalar.
Ordenación por valores sin mantener índices
sort(array)Ordena los valores del array en sentido creciente y lo reindexa asignando índice CERO al menor de los valores.
rsort(array)Ordena la matriz en sentido decreciente de sus valores y la reindexa asignando índice CERO al mayor de estos.
Ordenación por índices
ksort(array)Ordena la matriz según sus índices y en sentido creciente de estos.
krsort(array)Ordena la matriz por índices en sentido decreciente de los mismos.
Ordenación por valores manteniendo índices
asort(array)Ordena la matriz según sus valores en sentido creciente y mantiene los índices del array original.
arsort(array)Ordena la matriz por valores en sentido decreciente y sigue manteniendo los índices originales.
Ordenación mediante función definida por usuario
PHP permite que el usuario pueda definir funciones en las que establezca sus criterios particulares de ordenación. Las funciones PHP que permiten usar esta característica son las siguientes:
uasort(array, funcion)Ordena la matriz utilizando los criterios establecidos por la función definida por el usuario y mantiene los índices del array.
usort(array, funcion)Ordena la matriz por valores utilizando los criterios definidos en la función de usuario y modifica los índices.
uksort(array, funcion)Ordena la matriz por claves utilizando los criterios definidos en la función.
En el ejemplo hemos definido una función de comparación siguiendo el criterio de ser o no ser múltiplo de 2. Trataremos las funciones en un tema aparte. La utilidad de la que hemos incluido en el ejemplo es la siguiente: Si el valor de la variable es par le asignamos un número negativo como respuesta y en caso contrario uno positivo. De esta forma los valores del array que devuelven negativos se consideran anteriores en la ordenación a los que dan como resultado un número positivo.
<?php $a=array(1,2,3,1,1,2,3,3,4,4,4,0,1); $b=array("blanco","azul","blanco","blanco","azul","Blanco","Azul"); $c=array( "b" =>"verde", "c" =>"rojo", "e" =>"verde", "f" =>"Rojo", "g" =>"Verde", "a"=>"rojo", "d" =>"rojo",); sort ($a); echo "<h3>Ordenación por valores usando sort</h3>"; foreach ($a as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } sort ($c); echo "<h3>Ordenación por valores usando sort</h3>"; foreach ($c as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } rsort($a); echo "<h3>Ordenación inversa por valores usando rsort</h3>"; foreach ($a as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } ksort($b); echo "<h3>Ordenación por claves usando ksort</h3>"; foreach ($b as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } krsort($b); echo "<h3>Ordenación inversa por claves usando krsort</h3>"; foreach ($b as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } asort($c); echo "<h3>Ordenación por valores manteniendo indices </h3>"; foreach ($c as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } arsort($c); echo "<h3>Ordenación inversa por valores manteniendo indices arsort</h3>"; foreach ($c as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } echo "<h3>Ordenación por valores mediante función de usuario manteniendo indices</h3>"; /* esta función recoge el valor de la variable $a y aplicar el operador de comparación ternario de forma que si el valor de la variable es impar devuelve como valor -2 y si es par devuelve 2 el 2 y el menos 2 únicamente establecen criterios de comparación de modo que los valores -2 serán considerados anteriores a los valores +2 */ function micomparar (&$a) { return ($a%2!=0) ? -2 : 2; } uasort ($a, 'micomparar'); foreach ($a as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } echo "<h3>Ordenación por clave mediante función de usuario </h3>"; uksort ($a, 'micomparar'); foreach ($a as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } echo "<h3>Ordenación por valores mediante función de usuario </h3>"; usort ($a, 'micomparar'); foreach ($a as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } ?>