PHP 8.4.2 Released!

uasort

(PHP 4, PHP 5, PHP 7, PHP 8)

uasortOrdena un array con una función de comparación definida por el usuario y mantiene la asociación de índices

Descripción

uasort(array &$array, callable $value_compare_func): bool

Esta función ordena un array tal que los índices de array mantienen sus correlaciones con los elementos del array con los que están asociados, usando una función de comparación definida por el usuario.

Se usa pricipalmente cuando se ordenan arrays asociativos donde el orden del elemento mismo es significante.

Nota:

Si dos miembros se comparan como iguales, su orden relativo en el array oredenado será indefinido.

Parámetros

array

El array de entrada.

value_compare_func

Véase usort() y uksort() para ejemplos de funciones de comparación definidas por el usuario.

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Ejemplos

Ejemplo #1 Ejemplo básico de uasort()

<?php
// Función de comparación
function cmp($a, $b) {
if (
$a == $b) {
return
0;
}
return (
$a < $b) ? -1 : 1;
}

// Array a ser ordenado
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
print_r($array);

// Ordenar e imprimir el array resultante
uasort($array, 'cmp');
print_r($array);
?>

El resultado del ejemplo sería:

Array
(
    [a] => 4
    [b] => 8
    [c] => -1
    [d] => -9
    [e] => 2
    [f] => 5
    [g] => 3
    [h] => -4
)
Array
(
    [d] => -9
    [h] => -4
    [c] => -1
    [e] => 2
    [g] => 3
    [a] => 4
    [f] => 5
    [b] => 8
)

Ver también

add a note

User Contributed Notes 4 notes

up
152
magikMaker
14 years ago
a quick reminder on the syntax if you want to use uasort in a Class or Object:

<?php

// procedural:
uasort($collection, 'my_sort_function');

// Object Oriented
uasort($collection, array($this, 'mySortMethod'));

// Objet Oriented with static method
uasort($collection, array('self', 'myStaticSortMethod'));

?>
up
34
yannick dot battail at gmail dot com
14 years ago
An Example using anonymous function.
Anonymous functions make some time the code easier to understand.
<?php
$fruits
= array('Orange9','Orange11','Orange10','Orange6','Orange15');
uasort ( $fruits , function ($a, $b) {
return
strnatcmp($a,$b); // or other function/code
}
);
print_r($fruits);
?>
returns
Array
(
[3] => Orange6
[0] => Orange9
[2] => Orange10
[1] => Orange11
[4] => Orange15
)
up
5
php at eden2 dot com
21 years ago
Is it just me, or are the examples below misleading, and actually demonstrating situations that would be more appropriate for usort()?

After trying to make sense of the uasort() description, it sounds like it's more for sorting a 1D array like this:

"john" => "$23.12"
"tim" => "$6.50"
"bob" => "$18.54"

and getting back:

"tim" => "$6.50"
"bob" => "$18.54"
"john" => $23.12"

(assuming, of course, that your sort function is lopping off the $ and evaluating as a number -- which would complicate the use of asort() ;)
up
0
raveren at gmail dot com
17 hours ago
Since php7.0 you can replace this boilerplate

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

with the spaceship operator:
https://www.php.net/manual/en/migration70.new-features.php#migration70.new-features.spaceship-op

return $a <=> $b;
To Top