HOWTO · PHP

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

Questo articolo introduce come ordinare un array di array associativi in base al valore di una determinata chiave in PHP. Include la funzione array_multisort() e la funzione usort().

In questa pagina

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
        )

)