Note that return values between (-1, 1) are being considered as 0.(PHP 5 >= 5.2.0, PHP 7, PHP 8)
ArrayObject::uasort — Ordena as entradas com uma função de comparação definida pelo usuário e mantém a associação de chaves
Esta função ordena as entradas de forma que as chaves mantenham sua correlação com a entrada à qual estão associadas, usando uma função de comparação definida pelo usuário.
Isso é usado principalmente ao ordenar arrays associativos onde a ordem real dos elementos é significativa.
Nota:
Se dois elementos são comparados como iguais, eles mantêm sua ordem original. Antes do PHP 8.0.0, sua ordem relativa no array ordenado era indefinida.
callbackA função de comparação deve retornar um inteiro menor que, igual ou maior que zero se o primeiro argumento for considerado respectivamente menor que, igual ou maior que o segundo.
Sempre retorna true.
| Versão | Descrição |
|---|---|
| 8.2.0 |
O tipo do retorno agora é true; anteriormente, era bool.
|
Exemplo #1 Exemplo de ArrayObject::uasort()
<?php
// Função de comparação
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);
$arrayObject = new ArrayObject($array);
var_dump($arrayObject);
// Ordena e imprime o array resultante
$arrayObject->uasort('cmp');
var_dump($arrayObject);
?>O exemplo acima produzirá:
object(ArrayObject)#1 (1) {
["storage":"ArrayObject":private]=>
array(8) {
["a"]=>
int(4)
["b"]=>
int(8)
["c"]=>
int(-1)
["d"]=>
int(-9)
["e"]=>
int(2)
["f"]=>
int(5)
["g"]=>
int(3)
["h"]=>
int(-4)
}
}
object(ArrayObject)#1 (1) {
["storage":"ArrayObject":private]=>
array(8) {
["d"]=>
int(-9)
["h"]=>
int(-4)
["c"]=>
int(-1)
["e"]=>
int(2)
["g"]=>
int(3)
["a"]=>
int(4)
["f"]=>
int(5)
["b"]=>
int(8)
}
}
Note that return values between (-1, 1) are being considered as 0.