Ordenar arrays en PHP PHP
Publicado: 10 de Nov del 2011Prohibida la reproducción total o parcial de este artículo sin el previo consentimiento de Webtutoriales.com
Cómo ordenar arrays multidimensionales en PHP con usort y funciones anónimas
Ordenar listas de objetos, arrays asociativas y multidimensionales en PHP nunca fue más fácil. Desde PHP 5.3 se introdujo el concepto de closures o funciones anónimas. Estas permiten la creación de funciones sin nombre y en PHP se suelen usar como parámetro de callback.
*Nota: Si has programado en Ruby, estas funciones son algo parecido a lo que se conoce como blocks. Esta metodología también se suele usar bastante en Javascript.
Veamos un ejemplo:
Si tenemos un listado de arrays
$coleccion = array(
array(
"color" => "rojo"
),
array(
"color" => "blanco"
),
array(
"color" => "negro"
),
);
Lo ordenamos por la clave color alfabéticamente y de forma ascendente.
usort($coleccion, function($a, $b)
{
return strcmp($a["color"], $b["color"]);
});
El array ordenado quedará así:
print_r($coleccion);
Array
(
[0] => Array
(
[color] => blanco
)
[1] => Array
(
[color] => negro
)
[2] => Array
(
[color] => rojo
)
)
Como vemos la función permite pasarle como parámetro otra función.
Visibilidad de variables
Una de las cosas a tener en cuenta al usar funciones anónimas es que se crea un ámbito único para ejecutar el código de la función, es decir, las variables que se definan fuera de esta función no son accesibles. Para utilizar una variable externa podemos usar la instrucción use, por ejemplo:
$otra_variable = 1;
usort($coleccion, function($a, $b) use($otra_variable) {
if($otra_variable == 1) {
return strcmp($a["color"], $b["color"]);
} elseif($otravariable == 2) {
// ...
}
});
Comentarios
Artículos relacionadosVer más
- Calcular el tiempo exacto entre dos fechas
- Clase para conectar php con mysql
- Tipos de funciones para Expresiones Regulares
- Comparar Fechas en PHP
- Crear archivos en PHP
- Public, Private y Protected
- Programación Orientada a Objetos
- Formulario de contacto en PHP
- Modelo Vista Controlador
- Mostrar resultados por columnas