array_multisort

(PHP 4 )

array_multisort -- Classifica múltiplos arrays ou multi-dimensionais

Descrição

bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]])

array_multisort() pode ser usada para classificar vários arrays de uma vez ou apenas um array multi-dimensional de acordo com uma das dimensões. A associação entre chaves e valores é mantida.

Os arrays dados são tratados como colunas de uma tabela a ser classificada pelas linhas - isso lembra a funcionalidade da cláusula ORDER BY da SQL. O primeiro array é o principal na classificação. As linhas (valores) no primeiro array serve de base para a classificação do próximo, e assim por diante.

A estrutura de argumentos dessa função não é muito normal, mas bastante flexível. O primeiro argmento de todos deve ser um array. Subsequentemente, cada argumento pode ser um array ou um dos sinais de classificação da lista a seguir.

Sinais de ordem de classificação:

Sinais de tipos de classificação:

Não podem existir dois sinais de classificação do mesmo tipo especificados depois de um mesmo array. Apenas um. Os sinais de classificação especificados depois de um array se aplicam apenas para esse array - a eles são atribuídos por padrão os valores SORT_ASC e SORT_REGULAR depois de cada novo argumento do tipo array.

Retorna TRUE se obtiver sucesso, FALSE se falhar.

Exemplo 1. Classificando múltiplos arrays

$ar1 = array ("10", 100, 100, "a");
$ar2 = array (1, 3, "2", 1);
array_multisort ($ar1, $ar2);

Nesse exemplo, depois da classificação, o primeiro array terá 1-, "a", 100, 100. O segundo conterá 1, 1, "2", 3. Os elementos do segundo array que correpondem aos do primeiro (100 e 100) também foram classificados.

Exemplo 2. Classificando um array multi-dimensional

$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
array_multisort ($ar[0], SORT_ASC, SORT_STRING, 
                 $ar[1], SORT_NUMERIC, SORT_DESC);

Nesse exemplo, depois da classificação, o primeiro array terá 10, 100, 100, "a" (foi classificado como strings em ordem crescente), e o segundo conterá 1, 3, "2", 1 (classificado como números, em ordem descrescente).