Função array_multisort
A função array_multisort permite ordenar vários arrays simultaneamente
ou realizar ordenação complexa de arrays multidimensionais por um ou vários critérios.
Sintaxe
array_multisort(
array1,
[sorting_order = SORT_ASC],
[sorting_type = SORT_REGULAR],
array2,
array3,
...
);
Parâmetro sorting_order
O parâmetro sorting_order define
a direção da ordenação. Aqui estão seus valores:
| Parâmetro | Descrição |
|---|---|
SORT_ASC |
Ordenação crescente (valor padrão). |
SORT_DESC |
Ordenação decrescente. |
Parâmetro sorting_type
O parâmetro sorting_type define
o tipo de comparação dos elementos. Aqui estão seus valores:
| Parâmetro | Descrição |
|---|---|
SORT_REGULAR |
Comparação normal dos elementos (padrão). |
SORT_NUMERIC |
Comparação numérica dos elementos. |
SORT_STRING |
Comparação de string dos elementos. |
SORT_LOCALE_STRING |
Comparação de string considerando a localidade atual. |
SORT_NATURAL |
Ordenação natural de strings (como no explorador de arquivos). |
SORT_FLAG_CASE |
Combina com SORT_STRING ou SORT_NATURAL para ordenação que ignora maiúsculas/minúsculas. |
Exemplo
Ordenação de dois arrays com especificação de parâmetros:
<?php
$numbers = [10, 2, 15, 4];
$letters = ['b', 'a', 'd', 'c'];
array_multisort(
$numbers, SORT_DESC, SORT_NUMERIC,
$letters, SORT_ASC, SORT_STRING
);
print_r($numbers);
print_r($letters);
?>
Resultado da execução do código:
[15, 10, 4, 2]
['d', 'b', 'c', 'a']
Exemplo
Ordenação de um array multidimensional por um campo específico:
<?php
$data = [
['name' => 'John', 'age' => 25],
['name' => 'Alice', 'age' => 22],
['name' => 'Bob', 'age' => 30]
];
$ages = array_column($data, 'age');
array_multisort($ages, SORT_ASC, $data);
print_r($data);
?>
Resultado da execução do código:
[
['name' => 'Alice', 'age' => 22],
['name' => 'John', 'age' => 25],
['name' => 'Bob', 'age' => 30]
]
Exemplo
Ordenação de um array multidimensional por dois campos específicos:
<?php
$data = [
['name' => 'John', 'age' => 25],
['name' => 'alice', 'age' => 22],
['name' => 'Bob', 'age' => 30]
];
$names = array_column($data, 'name');
$ages = array_column($data, 'age');
array_multisort(
$names, SORT_ASC, SORT_STRING | SORT_FLAG_CASE,
$ages, SORT_DESC,
$data
);
print_r($data);
?>
Resultado da execução do código:
[
['name' => 'alice', 'age' => 22],
['name' => 'Bob', 'age' => 30],
['name' => 'John', 'age' => 25]
]
Exemplo
Ordenação natural de strings:
<?php
$files = ['file1.txt', 'file10.txt', 'file2.txt'];
array_multisort($files, SORT_ASC, SORT_NATURAL);
print_r($files);
?>
Resultado da execução do código:
['file1.txt', 'file2.txt', 'file10.txt']
Exemplo
Ordenação que ignora maiúsculas/minúsculas:
<?php
$words = ['Apple', 'banana', 'cherry', 'apricot'];
array_multisort($words, SORT_ASC, SORT_STRING | SORT_FLAG_CASE);
print_r($words);
?>
Resultado da execução do código:
['Apple', 'apricot', 'banana', 'cherry']
Veja também
-
a função
sort,
que ordena em ordem crescente de elementos -
a função
rsort,
que ordena em ordem decrescente de elementos -
a função
ksort,
que ordena em ordem crescente de chaves -
a função
krsort,
que ordena em ordem decrescente de chaves -
a função
asort,
que ordena em ordem crescente de elementos preservando chaves -
a função
arsort,
que ordena em ordem decrescente de elementos preservando chaves -
a função
natsort,
que ordena de forma natural -
a função
natcasesort,
que ordena de forma natural ignorando maiúsculas/minúsculas -
a função
usort,
que ordena por callback -
a função
uksort,
que ordena por callback por chaves -
a função
uasort,
que ordena por callback preservando chaves