Como ordenar uma array de arrays associativas pelo valor de uma dada chave em PHP
-
Utilize
array_multisort()
Função para ordenar uma array de arrays associativas pelo valor de uma dada chave em PHP -
Utilize a função
usort()
para ordenar uma array de arrays associativas pelo valor de uma determinada chave em PHP
Este artigo introduzirá métodos para ordenar uma array
de arrays associativas pelo valor de uma dada chave em PHP.
- Utilizando a função
array_multisort()
. - Utilizando a função
usort()
Utilize array_multisort()
Função para ordenar uma array de arrays associativas pelo valor de uma dada chave em PHP
Podemos utilizar a função integrada array_multisort()
para ordenar um array de arrays associativas pelo valor de uma determinada chave. Ela pode ordenar muitas arrays de uma vez ou uma array multidimensional. A sintaxe correta para utilizar esta função é a seguinte
str_replace($arrayName, $sort_order, $sort_flags);
A função integrada array_multisort()
tem três parâmetros. Os detalhes de seus parâmetros são os seguintes
Parâmetros | Descrição | |
---|---|---|
$arrayName |
obrigatório | É a confusão que queremos classificar. |
$sort_order |
opcional | Ela especifica a ordem na qual ordenaremos nossa array. Pode ser SORT_ASC para ordem ascendente e SORT_DESC para ordem descendente. Seu valor padrão é SORT_ASC . |
$sort_flags |
opcional | Ela especifica as opções de classificação. Você pode lê-lo aqui. |
Esta função retorna VERDADEIRA se for bem sucedida. Caso contrário, ela retorna FALSO.
O programa abaixo mostra como podemos utilizar a função array_multisort()
para ordenar um array de arrays associativas pelo valor de uma determinada chave.
<?php
$result = array(
array("firstname"=>"Olivia", "marks"=>85),
array("firstname"=>"Jacob", "marks"=>60),
array("firstname"=>"Henry", "marks"=>100),
array("firstname"=>"Lili", "marks"=>40),
array("firstname"=>"Stefan", "marks"=>5),
array("firstname"=>"Bonnie", "marks"=>97),
);
$marks = array();
foreach ($result as $key => $row)
{
$marks[$key] = $row['marks'];
}
array_multisort($marks, SORT_DESC, $result);
print_r($result);
?>
Criamos um array $marks
contendo as marcas do array original. Depois disso, utilizamos a função array_multisort()
para ordenar o array $marks
com base no array $result
. A saída será o array $result
ordenado.
Resultado:
Array
(
[0] => Array
(
[firstname] => Henry
[marks] => 100
)
[1] => Array
(
[firstname] => Bonnie
[marks] => 97
)
[2] => Array
(
[firstname] => Olivia
[marks] => 85
)
[3] => Array
(
[firstname] => Jacob
[marks] => 60
)
[4] => Array
(
[firstname] => Lili
[marks] => 40
)
[5] => Array
(
[firstname] => Stefan
[marks] => 5
)
)
O array
é ordenado em ordem decrescente pelo valor da chave mark.
Utilize a função usort()
para ordenar uma array de arrays associativas pelo valor de uma determinada chave em PHP
Em PHP, também podemos utilizar a função usort()
para classificar uma série de arrays associativas pelo valor de uma determinada chave. Esta função ordena o array utilizando uma função definida pelo usuário. A sintaxe correta para utilizar esta função é a seguinte:
preg_replace($arrayName, $functionName);
A função usort()
aceita dois parâmetros. O detalhe de seus parâmetros é o seguinte
Parâmetros | Descrição | |
---|---|---|
$arrayName |
obrigatório | É a array que queremos classificar |
$functionName |
obrigatório | É a função definida pelo usuário que irá classificar a array passada. |
Ela retorna VERDADEIRO se for bem sucedida, FALSO caso contrário. O programa que ordena o array é o seguinte:
<?php
function DescSort($item1,$item2)
{
if ($item1['marks'] == $item2['marks']) return 0;
return ($item1['marks'] < $item2['marks']) ? 1 : -1;
}
$result = array(
array("firstname"=>"Olivia", "marks"=>85),
array("firstname"=>"Jacob", "marks"=>60),
array("firstname"=>"Henry", "marks"=>100),
array("firstname"=>"Lili", "marks"=>40),
array("firstname"=>"Stefan", "marks"=>5),
array("firstname"=>"Bonnie", "marks"=>97),
);
usort($result,'DescSort');
print_r($result);
?>
Resultado:
Array
(
[0] => Array
(
[firstname] => Henry
[marks] => 100
)
[1] => Array
(
[firstname] => Bonnie
[marks] => 97
)
[2] => Array
(
[firstname] => Olivia
[marks] => 85
)
[3] => Array
(
[firstname] => Jacob
[marks] => 60
)
[4] => Array
(
[firstname] => Lili
[marks] => 40
)
[5] => Array
(
[firstname] => Stefan
[marks] => 5
)
)
Para ordenação ascendente, a função será:
<?php
function AscSort($item1,$item2)
{
if ($item1['marks'] == $item2['marks']) return 0;
return ($item1['marks'] > $item2['marks']) ? 1 : -1;
}
$result = array(
array("firstname"=>"Olivia", "marks"=>85),
array("firstname"=>"Jacob", "marks"=>60),
array("firstname"=>"Henry", "marks"=>100),
array("firstname"=>"Lili", "marks"=>40),
array("firstname"=>"Stefan", "marks"=>5),
array("firstname"=>"Bonnie", "marks"=>97),
);
usort($result,'AscSort');
print_r($result);
?>
Resultado:
Array
(
[0] => Array
(
[firstname] => Stefan
[marks] => 5
)
[1] => Array
(
[firstname] => Lili
[marks] => 40
)
[2] => Array
(
[firstname] => Jacob
[marks] => 60
)
[3] => Array
(
[firstname] => Olivia
[marks] => 85
)
[4] => Array
(
[firstname] => Bonnie
[marks] => 97
)
[5] => Array
(
[firstname] => Henry
[marks] => 100
)
)
Artigo relacionado - PHP Array
- Como determinar a primeira e última iteração em um loop de Foreach em PHP
- Como Converter um Array em uma string em PHP
- Como Obter o Primeiro Elemento de um Array em PHP
- Como fazer Eco ou Imprimir um Array em PHP
- Como excluir um elemento de uma array em PHP
- Como remover elementos de vetor vazio em PHP