Saltar al contenido

uasort()

Ordenar arrays en PHP con uasort()

En el corazón de la mayoría de las tareas de programación está la necesidad de ordenar datos. Ordenar datos te permite acceder a ellos y mostrarlos de forma más eficiente, lo que puede ahorrarte tiempo y recursos a largo plazo. En PHP, puedes ordenar arrays usando la función integrada uasort().

En este artículo, exploraremos la función uasort(), su sintaxis y los distintos parámetros que acepta. También profundizaremos en cómo se puede usar esta función para ordenar arrays en PHP y ofreceremos ejemplos de aplicaciones prácticas de esta potente función.

¿Qué es uasort()?

uasort() es una función integrada de PHP que se utiliza para ordenar arrays de una manera definida por el usuario. Ordena un array aplicando una función de comparación definida por el usuario a cada elemento del array, de forma que se preserva la relación entre claves y valores. Luego, la función reordena los elementos del array según el resultado de la función de comparación.

Esta función es especialmente útil cuando necesitas ordenar arrays asociativos o arrays multidimensionales, ya que te permite especificar qué valores comparar y cómo compararlos.

Sintaxis de uasort()

La sintaxis de uasort() es la siguiente:

Sintaxis de uasort()

php
uasort(array &$array, callable $comparison_function): bool

Desglosemos las distintas partes de esta sintaxis:

  • array &$array: Este es el array que se va a ordenar. El símbolo & antes de la variable $array indica que se trata de una referencia al array original, lo que significa que cualquier cambio realizado en el array ordenado también se reflejará en el array original.
  • callable $comparison_function: Esta es la función de comparación que se aplicará a los elementos del array. La función de comparación debe tomar dos argumentos, $a y $b, que representan los elementos que se comparan. La función debe devolver un entero que indique la relación entre $a y $b.
  • bool: Este es el tipo de retorno de la función uasort(). Devuelve true en caso de éxito y false en caso de fallo.

Parámetros de la función de comparación

La función de comparación utilizada en uasort() debe devolver un entero que indique la relación entre dos valores. La función debe tomar dos argumentos, $a y $b, que representan los elementos que se comparan. El valor devuelto debe ser el siguiente:

  • Si $a es mayor que $b, la función debe devolver un entero positivo.
  • Si $a es igual a $b, la función debe devolver 0.
  • Si $a es menor que $b, la función debe devolver un entero negativo.

Ejemplos de uasort()

Exploremos algunos ejemplos de cómo se puede usar uasort() para ordenar arrays en PHP.

Ejemplo 1: Ordenar un array simple

Supongamos que tenemos el siguiente array:

Un array de PHP

php
$array = array(3, 1, 4, 1, 5, 9, 2, 6, 5, 3);

Para ordenar este array en orden ascendente, podemos usar la siguiente función de comparación:

Ordenar un array en PHP

php
function compare($a, $b) {
    return ($a < $b) ? -1 : 1;
}

Luego podemos llamar a la función uasort() de la siguiente manera:

Ordenar un array simple usando la función uasort()

php
<?php

$array = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3];

function compare($a, $b)
{
    return $a < $b ? -1 : 1;
}

uasort($array, "compare");

print_r($array);

Esto ordenará el array en orden ascendente, de la siguiente manera:


console
Array
(
    [3] => 1
    [1] => 1
    [6] => 2
    [9] => 3
    [0] => 3
    [2] => 4
    [8] => 5
    [4] => 5
    [7] => 6
    [5] => 9
)

Ejemplo 2: Ordenar un array asociativo por valor

Supongamos que tenemos el siguiente array asociativo:

Un array asociativo de PHP

php
$array = array(
    "John" => 32,
    "Mary" => 28,
    "Bob" => 45,
    "Jane" => 28,
    "David" => 37
);

Para ordenar este array por valor en orden ascendente, podemos usar la siguiente función de comparación:

Ordenar un array en PHP usando una función de comparación

php
function compare($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

Luego podemos llamar a la función asort() de la siguiente manera:

Ordenar un array asociativo por valor usando la función uasort() en PHP

php
<?php

$array = [
    "John" => 32,
    "Mary" => 28,
    "Bob" => 45,
    "Jane" => 28,
    "David" => 37,
];

function compare($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return $a < $b ? -1 : 1;
}

uasort($array, "compare");

print_r($array);

Esto ordenará el array por valor en orden ascendente, de la siguiente manera:


console
array(
    "Mary" => 28,
    "Jane" => 28,
    "John" => 32,
    "David" => 37,
    "Bob" => 45
);

Ejemplo 3: Ordenar un array multidimensional por valor

Supongamos que tenemos el siguiente array multidimensional:

Un array multidimensional en PHP

php
<?php

$array = [["John", 32], ["Mary", 28], ["Bob", 45], ["Jane", 28], ["David", 37]];

Para ordenar este array por el segundo valor de cada subarray en orden ascendente, podemos usar la siguiente función de comparación:

Ordenar un array por el segundo valor de cada subarray en PHP usando una función de comparación

php
function compare($a, $b) {
    if ($a[1] == $b[1]) {
        return 0;
    }
    return ($a[1] < $b[1]) ? -1 : 1;
}

Luego podemos llamar a la función uasort() de la siguiente manera:

Ejemplo de ordenar un array multidimensional por valor en PHP

php
<?php

$array = [["John", 32], ["Mary", 28], ["Bob", 45], ["Jane", 28], ["David", 37]];

function compare($a, $b) {
    if ($a[1] == $b[1]) {
        return 0;
    }
    return ($a[1] < $b[1]) ? -1 : 1;
}

uasort($array, "compare");

print_r($array);

Esto ordenará el array por el segundo valor de cada subarray en orden ascendente, de la siguiente manera:


console
Array
(
    [1] => Array
        (
            [0] => Mary
            [1] => 28
        )

    [3] => Array
        (
            [0] => Jane
            [1] => 28
        )

    [0] => Array
        (
            [0] => John
            [1] => 32
        )

    [4] => Array
        (
            [0] => David
            [1] => 37
        )

    [2] => Array
        (
            [0] => Bob
            [1] => 45
        )

)

Conclusión

Ordenar arrays es una tarea esencial en muchas aplicaciones de programación, y PHP ofrece una potente función para ordenar arrays de una manera definida por el usuario. Al usar la función uasort(), puedes ordenar arrays en PHP con facilidad, e incluso ordenar arrays asociativos y multidimensionales. Al comprender la sintaxis y los parámetros de esta función, puedes aprovechar su potencia para ordenar datos de forma eficiente en tus aplicaciones PHP.

Practice

What is the purpose of the uasort() function in PHP?

¿Te resulta útil?

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