Saltar al contenido

usort()

En el mundo del desarrollo web, PHP es un lenguaje de scripting popular utilizado para crear sitios web dinámicos e interactivos. Una de las muchas funciones que ofrece PHP es la función usort(), que se utiliza para ordenar arrays en un orden específico mediante una función de comparación definida por el usuario. En este artículo, discutiremos la función usort() en detalle y demostraremos cómo se puede utilizar para ordenar arrays con reglas de ordenamiento personalizadas.

¿Qué es la función usort()?

La función usort() es una función integrada de PHP que te permite ordenar arrays basándote en tus propias reglas de ordenamiento personalizadas. A diferencia de las funciones de ordenamiento estándar que ordenan por valor o clave en orden ascendente/descendente, usort() requiere una función de devolución de llamada (callback) para definir la lógica de comparación. Modifica el array original en su lugar y devuelve true en caso de éxito o false en caso de fallo. Con usort(), puedes definir tus propias reglas de ordenamiento personalizadas para ordenar arrays en cualquier orden que desees.

Nota: usort() no es un ordenamiento estable. Si dos elementos se comparan como iguales, no se garantiza que se preserve su orden relativo original. Para código de producción que requiera un ordenamiento estable, considera utilizar un algoritmo de ordenamiento estable o un pre-ordenamiento con una función estable. Además, usort() vuelve a indexar las claves numéricas del array secuencialmente, comenzando desde 0.

Sintaxis

La sintaxis de la función usort() es la siguiente:

La sintaxis de la función usort() en PHP

php
usort($array, $callback);

Aquí, $array es el array que deseas ordenar, y $callback es la función de devolución de llamada que define las reglas de ordenamiento personalizadas.

Parámetros y Valor de Retorno

ParámetroTipoDescripción
$arrayarrayEl array a ordenar.
$callbackcallableUna función de comparación definida por el usuario.

Valor de Retorno: Devuelve true en caso de éxito o false en caso de fallo.

Ejemplo de Uso

Veamos un ejemplo para ver cómo funciona la función usort(). Supongamos que tenemos un array de nombres que queremos ordenar alfabéticamente, pero con una regla personalizada que indique que todos los nombres que comiencen con "J" deben ir primero.

¿Cómo usar la función usort() en PHP?

php
<?php

$names = ["John", "Adam", "Jack", "Jenny", "Bob"];
usort($names, function ($a, $b) {
    if (substr($a, 0, 1) === 'J' && substr($b, 0, 1) !== 'J') {
        return -1;
    } elseif (substr($a, 0, 1) !== 'J' && substr($b, 0, 1) === 'J') {
        return 1;
    } else {
        return $a <=> $b;
    }
});

print_r($names);

En este ejemplo, definimos una función de devolución de llamada que compara dos nombres y devuelve -1, 0 o 1 según las reglas de ordenamiento personalizadas. Si la primera letra de $a es "J" y la primera letra de $b no es "J", entonces $a va antes que $b. Si la primera letra de $a no es "J" y la primera letra de $b es "J", entonces $b va antes que $a. Si ambos nombres comienzan con "J" o ninguno comienza con "J", utilizamos el moderno operador de comparación espacial de PHP (<=>) para comparar los nombres alfabéticamente.

Después de ejecutar este código, el array $names se ordenará de la siguiente manera:

console
Array
(
    [0] => Jack
    [1] => Jenny
    [2] => John
    [3] => Adam
    [4] => Bob
)

Conclusión

En este artículo, discutimos la función usort() en PHP y demostramos cómo se puede utilizar para ordenar arrays con reglas de ordenamiento personalizadas. Al definir una función de devolución de llamada, puedes ordenar arrays en cualquier orden que desees, basándote en tus propias reglas personalizadas. Esta función puede ser especialmente útil en situaciones donde las funciones de ordenamiento integradas en PHP no son suficientes para tus necesidades. Con la función usort(), tienes control total sobre cómo se ordenan tus arrays.

Práctica

¿Cuál es el propósito de la función usort() en PHP?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.