php

Ordenar un arreglo ascendente y descendente en PHP

Introducción

Vamos a seguir viendo tutoriales de arreglos con PHP. Ya vimos cómo eliminar un elemento, cómo buscar secuencialmente en uno de ellos y cómo invertirlos.

Lo que nos reúne aquí hoy es: cómo ordenar un arreglo en PHP.

El ordenamiento de arreglos en PHP es una cosa muy sencilla. Puede ordenar arreglos de números o de cadenas, cosa que veremos hoy. También veremos cómo cambiar el orden para que no siempre sea ascendente.

Nota: mira este tutorial para ordenar arreglos por fecha.

Ordenamiento de arreglos en PHP

Como lo dije, veremos dos casos comunes: el ordenamiento de arreglos de cadenas y de números. Para esto usamos la función sort cuya documentación está aquí.

Esta función recibe dos argumentos: el arreglo a ordenar y una bandera cuyo uso veremos más adelante. Lo que devuelves un booleano indicando si el ordenamiento fue correcto, y modifica el arreglo directamente por referencia.

Veamos ahora sí algunos ejemplos.

Ordenar arreglo numérico

<?php
/*
 
    Ordenar un arreglo numérico en PHP
    @author parzibyte.me/blog
 
    Nota: si quieres cambiar el orden, simplemente invierte el arreglo después de ordenarlo:
    
*/ 
# El arreglo que tiene números desordenados
$numeros = [96, 28, 11, 55, 20, 2015, 500, 630, -10, -1, 200, 96];
echo "El arreglo desordenado:\n";
print_r($numeros);
 
#Lo ordenamos de modo numérico
sort($numeros, SORT_NUMERIC);
 
echo "El arreglo después de haber sido ordenado:\n";
print_r($numeros);
 
?>

Ahí ordenamos un arreglo pasándole la bandera de SORT_NUMERIC para que lo ordene numéricamente. Ya dije que esta función no devuelve el arreglo, sino que lo modifica directamente.

Al final, el arreglo ordenado será este:

Ordenar arreglo numéricamente

Ordenar arreglo de cadenas

Es casi lo mismo de arriba, sólo que ahora cambia el arreglo y la bandera. Le indicamos a PHP que lo ordene tomando en cuenta que los elementos son cadenas, usando la bandera SORT_STRING.

Aquí el código fuente:

<?php
/*

    Ordenar un arreglo de cadenas en PHP
    @author parzibyte.me/blog

    Nota: si quieres cambiar el orden, simplemente invierte el arreglo después de ordenarlo:
    
*/
# El arreglo que tiene cadenas desordenadas; en este caso frutas
$frutas = ["Pera", "Manzana", "Sandía", "Limón", "Mango", "Melón", "Melocotón"];
echo "El arreglo desordenado:\n";
print_r($frutas);

#Lo ordenamos tomando en cuenta que son cadenas
sort($frutas, SORT_STRING);

echo "El arreglo después de haber sido ordenado:\n";
print_r($frutas);

?>

Justo como lo indiqué, cambiamos el arreglo y lo más importante: la bandera. Esto ordenará el arreglo de cadenas comparándolas como lo que son. El arreglo ordenado es este:

Ordenar arreglo de strings en PHP

Ordenar arreglos en orden inverso

Si nos fijamos bien, esta función no nos da a elegir el orden del arreglo. Es decir, puede que nosotros queramos ordenarlo de manera descendente pero PHP lo ordene de manera ascendente.

Para no complicarnos buscando una forma, podemos invertir el arreglo después de que este sea ordenado, así podremos cambiar el orden.

Ejemplo de orden inverso

Únicamente para aclarar y ejemplificar lo que digo, aquí dejo un fragmento que ordena el arreglo de strings anteriormente mencionado, pero lo hace al revés. Es decir, primero pondrá a la Sandía, no al Limón.

Aquí el código:

<?php
/*
 
    Ordenar un arreglo de cadenas en PHP, y luego invertirlo
    @author parzibyte.me/blog
 
    Nota: si quieres cambiar el orden, simplemente invierte el arreglo después de ordenarlo:
    
*/ 
# El arreglo que tiene cadenas desordenadas; en este caso frutas
$frutas = ["Pera", "Manzana", "Sandía", "Limón", "Mango", "Melón", "Melocotón"];
echo "El arreglo desordenado:\n";
print_r($frutas);
 
#Lo ordenamos tomando en cuenta que son cadenas
sort($frutas, SORT_STRING);
 
# Ahora lo invertimos:
$frutas = array_reverse($frutas);
 
echo "El arreglo después de haber sido ordenado e invertido:\n";
print_r($frutas);
 
?>

La salida es esta:

Cambiar forma de ordenamiento

Está de más mencionar que funcionaría igual para un arreglo numérico. Con eso acabamos hoy.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.