Ordina un array di array associativi in base al valore di una determinata chiave in PHP
-
Usa la funzione
array_multisort()
per ordinare un array di array associativi in base al valore di una data chiave in PHP -
Usa la funzione
usort()
per ordinare un array di array associativi in base al valore di una data 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
)
)