array_merge
array_pad
Funções para Array
PHP Manual

# array_multisort

(PHP 4, PHP 5)

array_multisort — Ordena 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(10, 100, 100, 0);
$ar2 = array(1, 3, 2, 4);
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", 11, 100, 100, "a"),
array( 1, 2, "2", 3, 1)
);
array_multisort($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC, SORT_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($volume, SORT_DESC, $edition, SORT_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_lowercase, SORT_ASC, SORT_STRING, $array);
print_r($array);
?>`

O exemplo acima irá imprimir:

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

array_merge
array_pad
Funções para Array
PHP Manual