Funções para Array
PHP Manual

usort

(PHP 4, PHP 5, PHP 7)

usortOrdena um array pelos valores utilizando uma função de comparação definida pelo usuário

Descrição

bool usort ( array &$array , string $cmp_function )

Essa função irá ordenar um array pelos valores usando uma função de classificação definida pelo usuário. Se o array precisar ser ordenado utilizando um critério não trivial, você deve usar essa função.

Nota:

Se dois elementos são considerados iguais, a ordem deles fica indefinida no array resultante.

Nota: Esta função define novas chaves para os elementos em array. Ela irá remover qualquer chave que você tenha definido, ao invés de simplesmente reordenar as chaves.

Parâmetros

array

The input array.

cmp_function

A função de comparação deve retornar um inteiro menor, igual ou maior que zero se o primeiro argumento for considerado respectivamente menor, igual, ou maior que o segundo.

Valor Retornado

Retorna TRUE em caso de sucesso ou FALSE em caso de falha.

Changelog

Versão Descrição
4.1.0 O novo algoritmo de ordenação foi introduzido. A cmp_function não mantem a ordenação original para elementos comparando como igual.

Exemplos

Exemplo #1 Exemplo da usort()

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

$a = array(32561);

usort($a"cmp");

foreach (
$a as $key => $value) {
    echo 
"$chave$valor\n";
}
?>

O exemplo acima irá imprimir:

0: 1
1: 2
2: 3
3: 5
4: 6

Nota:

Obviamente que nesse caso trivial a função sort() seria mais apropriada.

Exemplo #2 Exemplo de usort() usando um array multi-dimensional

<?php
function cmp($a$b)
{
    return 
strcmp($a["fruta"], $b["fruta"]);


$frutas[0]["fruta"] = "limoes";
$frutas[1]["fruta"] = "abacaxis";
$frutas[2]["fruta"] = "goiabas";

usort($frutas"cmp"); 

while (list(
$chave$valor) = each($frutas)) {
    echo 
"\$frutas[$chave]: " $valor["fruta"] . "\n";
}
?>

Na ordenação de um array multi-dimensional, $a e $b contém referências para o primeiro índice do array.

O exemplo acima irá imprimir:

$fruits[0]: abacaxis
$fruits[1]: goiabas
$fruits[2]: limoes

Exemplo #3 Exemplo de usort() usando uma função membro de um objeto

<?php
class TestObj {
    var 
$name;

    function 
TestObj($name)
    {
        
$this->name $name;
    }

    
/* Essa é a função estática de comparação */
    
static function cmp_obj($a$b)
    {
        
$al strtolower($a->name);
        
$bl strtolower($b->name);
        if (
$al == $bl) {
        return 
0;
        }
        return (
$al $bl) ? +: -1;
    }
}

$a[] = new TestObj("c");
$a[] = new TestObj("b");
$a[] = new TestObj("d");

usort($a, array ("TestObj""cmp_obj"));

foreach (
$a as $item) {
    echo 
$item->name "\n";
}
?>

O exemplo acima irá imprimir:

b
c
d

Veja Também


Funções para Array
PHP Manual