Classificar array multidimensional em PHP

Subodh Poudel 30 janeiro 2023
  1. Use o operador da nave espacial para classificar a matriz multidimensional em PHP
  2. Use a função usort() com uma função de comparação anônima para classificar um array multidimensional em PHP
  3. Use a função usort() com uma função de comparação definida pelo usuário para classificar um array multidimensional em PHP
Classificar array multidimensional em PHP

Este artigo apresentará três métodos para classificar a matriz multidimensional por valor em PHP.

Use o operador da nave espacial para classificar a matriz multidimensional em PHP

Podemos usar o operador de nave espacial <=> para classificar o array multidimensional com valores em PHP. Usamos a função usort() junto com o operador da nave espacial. O operador foi introduzido no PHP 7. Ele é usado para comparar os dois valores. Resulta em um valor inteiro 0 se ambos os operandos forem iguais, resulta em menor que 0 se o operando esquerdo é menor que o operando direito e resulta em maior que 0 se o operando esquerdo é maior que o direito operando. Da mesma forma, a função usort() ordena um array com valores considerando a função de comparação definida pelo usuário. A sintaxe da função é a seguinte.

usort($array, $callback)

Aqui, $array é o array que deve ser classificado. A opção $callback é uma função de callback anônima que compara o primeiro e o segundo argumentos do array.

Por exemplo, considere a seguinte matriz a ser classificada. Classificaremos o array com o valor da chave age.

$info = array(
    array('name' => 'Jadon', 'age' => 21, 'country' => 'England'),
    array('name' => 'Marcus', 'age' => 23, 'country' => 'England'),
    array('name' => 'Anthony', 'age' => 24, 'country' => 'France'),
    array('name' => 'Mason', 'age' => 19, 'country' => 'England'),
    array('name' => 'Dan', 'age' => 23, 'country' => 'Wales'),
);

Dentro da tag de abertura do PHP, escreva a função usort() com o array $info e uma função anônima como os dois argumentos. A função anônima tem $x e $y como parâmetros. Dentro do corpo da função, use o operador de nave espacial para comparar as idades de dois argumentos como $x['age'] <=> $y['age'] e retornar o valor. Em seguida, feche a tag de abertura do PHP. Então, use a função PHP print_r() para imprimir o array $info dentro da tag HTML <pre>.

Portanto, a matriz é classificada de acordo com o valor age, conforme mostrado na seção de saída.

Código de exemplo:

<?php
usort($info, function($x, $y) {
    return $x['age'] <=> $y['age'];
});
?>

<pre><?php print_r($info);?> </pre>

Produção:

Array
(
 [0] => Array
 (
 [name] => Mason
 [age] => 19
 [country] => England
 )

 [1] => Array
 (
 [name] => Jadon
 [age] => 21
 [country] => England
 )

 [2] => Array
 (
 [name] => Marcus
 [age] => 23
 [country] => England
 )

 [3] => Array
 (
 [name] => Dan
 [age] => 23
 [country] => Wales
 )

 [4] => Array
 (
 [name] => Anthony
 [age] => 24
 [country] => France
 )
)

Use a função usort() com uma função de comparação anônima para classificar um array multidimensional em PHP

Podemos usar a função usort() usada no primeiro método para classificar o array multidimensional com valores junto com uma função de retorno de chamada anônima. Neste método, usamos o operador de subtração em vez do operador de nave espacial <=>. Podemos subtrair os valores do array de acordo com o qual o array é classificado. Assim, podemos classificar o array. Usaremos o mesmo array $info para classificá-lo pelo valor $age. Este método pode ser usado antes do PHP 7, pois o operador de nave espacial foi introduzido apenas no PHP 7.

Por exemplo, escreva a função usort() com os parâmetros acima. No corpo da função anônima, retorne a subtração dos dois argumentos como $x['age'] - $y['age']. Imprima o array com print_r() como feito acima. Receberemos a mesma saída do primeiro método.

Código de exemplo:

<?php
usort($info, function($x, $y) {
    return $x['age'] - $y['age'];
});
?>
<pre><?php print_r($info);?> </pre>

Use a função usort() com uma função de comparação definida pelo usuário para classificar um array multidimensional em PHP

Este método é bastante semelhante ao segundo método. A única diferença é que usaremos uma função de comparação definida pelo usuário em vez da função anônima. Este método pode ser usado antes da versão 5.3 do PHP. É porque o conceito de função anônima foi introduzido no PHP 5.3.

Por exemplo, crie uma função definida pelo usuário sortByAge() com $x e $y como parâmetros. Dentro do corpo da função, escrita a subtração das idades conforme acima. Fora da função, escreva a função usort() com o array $info e sortByAge como argumentos. Por último, imprima a matriz.

O exemplo abaixo exibe a mesma saída do primeiro método.

Código de exemplo:

<?php
function sortByAge($x, $y) {
    return $x['age'] - $y['age'];
}
usort($info, 'sortByAge');
?>
<pre><?php print_r($info);?> </pre>
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

Artigo relacionado - PHP Array