Ordenando arrays por um índice no PHP
O PHP possui algumas funções nativas para ordenamento de arrays simples, mas e se for preciso ordenar por um índice específico em um array um pouquinho mais complexo? Pra esses casos existe a função usort. O que ela faz é ordenar um vetor utilizando uma função comparativa personalizada. Por exemplo, supondo que temos um array de um ranking, que registra o nome e os pontos dos competidores. Pra ordenar pelo índice ‘pontos’, basta criar uma função para comparar os valores de dois cadastros diferentes e passá-la como parâmetro da função usort (note que o nome é passado como string).
function ordenaPontos( $a, $b ) { if ( $a['pontos'] == $b['pontos'] ) { return 0; } return ( $a['pontos'] < $b['pontos'] ) ? -1 : 1; } $ranking = array( 0 => array( 'nome' => 'Davi', 'pontos' => 2 ), 1 => array( 'nome' => 'Letícia', 'pontos' => 4 ), 2 => array( 'nome' => 'Francisco', 'pontos' => 1 ), 3 => array( 'nome' => 'Cecília', 'pontos' => 3 ), ) usort( $ranking, 'ordenaPontos' );
No exemplo acima, preste atenção em uma outra pequena dica: eu sempre costumo deixar uma vírgula no último índice do array. Isso evita esquecê-la quando é adicionado um novo registro.