Funções para Array
PHP Manual

array_multisort

(PHP 4, PHP 5)

array_multisortOrdena múltiplos arrays ou arrays multidimensionais

Descrição

bool array_multisort ( array $arr [, mixed $arg [, mixed $... ]] )

array_multisort() pode ser usada para ordenar vários arrays de uma vez, ou um array multidimensional por uma ou mais dimensões.

Chaves associativas ( string ) serão mantidas, mas chaves númericas serão reindexadas.

Parâmetros

arr

Um array a ser ordenado.

arg

Opcionalmente um outro array , ou opções de ordenação para o argumento anterior array : SORT_ASC, SORT_DESC, SORT_REGULAR, SORT_NUMERIC, SORT_STRING.

...

arg's adicionais.

Valor Retornado

Retorna TRUE em caso de sucesso ou FALSE em falhas.

Exemplos

Exemplo #1 Ordenando múltiplos arrays

<?php
$ar1 
= array(101001000);
$ar2 = array(1324);
array_multisort($ar1$ar2);

var_dump($ar1);
var_dump($ar2);
?>

Nesse exemplo, depois da ordenação, o primeiro array terá 0, 10, 100, 100. O segundo conterá 4, 1, 2, 3. Ass entradas do segundo array correspondendo às entradas idênticas como foram ordenadas no primeiro array (100 e 100).

array(4) {
  [0]=> int(0)
  [1]=> int(10)
  [2]=> int(100)
  [3]=> int(100)
}
array(4) {
  [0]=> int(4)
  [1]=> int(1)
  [2]=> int(2)
  [3]=> int(3)
}

Exemplo #2 Ordenando um array multidimensional

<?php
$ar 
= array(
    array(
"10"11100100"a"),
    array(   
1,  2"2",   3,   1)
);
array_multisort($ar[0], SORT_ASCSORT_STRING,
                 
$ar[1], SORT_NUMERICSORT_DESC);
var_dump($ar);
?>

Neste exemplo, depois da ordenação, o primeiro array se transformará em "10", 100, 100, 11, "a" (ele foi ordenado como strings em ordem ascendente). O segundo conterá 1, 3, "2", 2, 1 (ordenado como números, em ordem descendente).

array(2) {
    [0]=> array(5) {
    [0]=> string(2) "10"
    [1]=> int(100)
    [2]=> int(100)
    [3]=> int(11)
    [4]=> string(1) "a"
    }
    [1]=> array(5) {
        [0]=> int(1)
        [1]=> int(3)
        [2]=> string(1) "2"
        [3]=> int(2)
        [4]=> int(1)
    }
}

Exemplo #3 Ordenando resultados de um banco de dados

Para este exemplo, cada elemento no array data representa uma linha na tabela. Este tipo de conjunto de dados é típico de registros de banco de dados.

Dados do Exemplo:

volume | edition
-------+--------
    67 |       2
    86 |       1
    85 |       6
    98 |       2
    86 |       6
    67 |       7

Os dados como um array, chamado data. Isto seria normalmente, por exemplo, obtido por um loop em mysql_fetch_assoc().

<?php
$data
[] = array('volume' => 67'edition' => 2);
$data[] = array('volume' => 86'edition' => 1);
$data[] = array('volume' => 85'edition' => 6);
$data[] = array('volume' => 98'edition' => 2);
$data[] = array('volume' => 86'edition' => 6);
$data[] = array('volume' => 67'edition' => 7);
?>

Neste exemplo, ordenaremos por volume descendente, edition ascendente.

Nós temos uma matriz de linhas, mas array_multisort() requer uma matriz de colunas, assim nós usamos o código abaixo para obter colunas e então realizar o ordenamento.

<?php
// Obter uma lista de colunas
foreach ($data as $key => $row) {
    
$volume[$key]  = $row['volume'];
    
$edition[$key] = $row['edition'];
}

// Ordena os dados com volume descendente, edition ascendente
// adiciona $data como o último parãmetro, para ordenar pela chave comum
array_multisort($volumeSORT_DESC$editionSORT_ASC$data);
?>

O conjunto de dados agora está ordenado e será parecido com isto:

volume | edition
-------+--------
    98 |       2
    86 |       1
    86 |       6
    85 |       6
    67 |       2
    67 |       7

Exemplo #4 Ordenar sem diferenciar maiúsculas e minúsculas

Ambas SORT_STRING e SORT_REGULAR diferenciam maiúsculas e minúsculas, strings começando com uma letra maiúscula virão antes de uma string começando com uma letra minúscula.

Para ordenar sem diferenciar maiúsculas e minúsculas, force a ordem da ordenação para que seja determinada por uma cópia em letras minúsculas da matriz original.

<?php
$array 
= array('Alpha''atomic''Beta''bank');
$array_lowercase array_map('strtolower'$array);

array_multisort($array_lowercaseSORT_ASCSORT_STRING$array);
print_r($array);
?>

O exemplo acima irá imprimir:

Array
(
    [0] => Alpha
    [1] => atomic
    [2] => bank
    [3] => Beta
)


Funções para Array
PHP Manual