Ordina un array di array associativi in base al valore di una determinata chiave in PHP

Minahil Noor 13 aprile 2021
  1. Usa la funzione array_multisort() per ordinare un array di array associativi in ​​base al valore di una data chiave in PHP
  2. Usa la funzione usort() per ordinare un array di array associativi in ​​base al valore di una data chiave in PHP
Ordina un array di array associativi in base al valore di una determinata chiave in PHP

Questo articolo introdurrà i metodi per ordinare un array di array associativi in ​​base al valore di una determinata chiave in PHP.

  • Utilizzo della funzione array_multisort()
  • Utilizzo della funzione usort()

Usa la funzione array_multisort() per ordinare un array di array associativi in ​​base al valore di una data chiave in PHP

Possiamo usare la funzione incorporata array_multisort() per ordinare un array di array associativi in ​​base al valore di una data chiave. Può ordinare molti array contemporaneamente o un array multidimensionale. La sintassi corretta per utilizzare questa funzione è la seguente

str_replace($arrayName, $sort_order, $sort_flags);

La funzione incorporata array_multisort() ha tre parametri. I dettagli dei suoi parametri sono i seguenti

Parametri Descrizione
$arrayName obbligatorio È l’array che vogliamo ordinare.
$sort_order opzionale Specifica l’ordine in cui ordineremo il nostro array. Può essere SORT_ASC per ordine crescente e SORT_DESC per ordine decrescente. Il suo valore predefinito è SORT_ASC.
$sort_flags opzionale Specifica le opzioni per l’ordinamento. Potete leggerlo qui.

Questa funzione restituisce TRUE se ha successo. Altrimenti, restituisce FALSE.

Il programma sotto mostra come possiamo usare la funzione array_multisort() per ordinare un array di array associativi in ​​base al valore di una data chiave.

<?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);  
?> 

Abbiamo creato un array $marks contenente i contrassegni dall’array originale. Dopodiché, abbiamo usato la funzione array_multisort() per ordinare l’array $marks in base all’array $result. L’output sarà l’array $result ordinato.

Produzione:

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
        )

)

La matrice è ordinata in ordine decrescente in base al valore della chiave dei segni.

Usa la funzione usort() per ordinare un array di array associativi in ​​base al valore di una data chiave in PHP

In PHP, possiamo anche usare la funzione usort() per ordinare un array di array associativi in ​​base al valore di una data chiave. Questa funzione ordina l’array utilizzando una funzione definita dall’utente. La sintassi corretta per utilizzare questa funzione è la seguente:

preg_replace($arrayName, $functionName);

La funzione usort() accetta due parametri. Il dettaglio dei suoi parametri è il seguente

Parametri Descrizione
$arrayName obbligatorio È l’array che vogliamo ordinare
$functionName obbligatorio È la funzione definita dall’utente che ordinerà l’array passato.

Restituisce TRUE in caso di successo, FALSE in caso contrario. Il programma che ordina l’array è il seguente:

<?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);
?> 

Produzione:

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
        )

)

Per l’ordinamento crescente, la funzione sarà:

<?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);
?> 

Produzione:

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
        )

)

Articolo correlato - PHP Array