HOWTO · PHP
Wie man in PHP ein Array assoziativer Arrays nach dem Wert eines gegebenen Schlüssels sortiert
Dieser Artikel führt ein, wie man in PHP ein Array von assoziativen Arrays nach dem Wert eines gegebenen Schlüssels sortiert. Er enthält die array_multisort() Funktion und die usort() Funktion.
Auf dieser Seite
Dieser Artikel stellt Methoden vor, um ein “Array” von assoziativen Arrays nach dem Wert eines gegebenen Schlüssels in PHP zu sortieren.
- Verwendung der
array_multisort()Funktion - Verwendung der Funktion
usort()
Verwenden Sie die Funktion array_multisort(), um ein Array von assoziativen Arrays nach dem Wert eines gegebenen Schlüssels in PHP zu sortieren
Wir können die eingebaute Funktion array_multisort() verwenden, um ein Array von assoziativen Arrays nach dem Wert eines gegebenen Schlüssels zu sortieren. Sie kann viele Arrays auf einmal oder ein mehrdimensionales Array sortieren. Die korrekte Syntax zur Verwendung dieser Funktion lautet wie folgt
str_replace($arrayName, $sort_order, $sort_flags);
Die eingebaute Funktion array_multisort() hat drei Parameter. Die Einzelheiten ihrer Parameter sind wie folgt
| Parameter | Beschreibung | |
|---|---|---|
$arrayName |
obligatorisch | Es ist das Array, das wir sortieren wollen. |
$sort_order |
optional | Es sagt etwas über die Reihenfolge aus, in der wir unser Array sortieren werden. Es kann SORT_ASC für aufsteigende Reihenfolge und SORT_DESC für absteigende Reihenfolge sein. Sein Standardwert ist SORT_ASC. |
$sort_flags |
optional | Sie informiert über die Möglichkeiten der Sortierung. Sie können es hier lesen. |
Diese Funktion gibt TRUE zurück, wenn sie erfolgreich ist. Andernfalls gibt sie FALSE zurück.
Das Programm unten zeigt, wie wir die Funktion array_multisort() verwenden können, um ein Array von assoziativen Arrays nach dem Wert eines gegebenen Schlüssels zu sortieren.
<?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);
?>
Wir haben ein Array $marks erstellt, das die Marken aus dem ursprünglichen Array enthält. Danach haben wir die Funktion array_multisort() benutzt, um das Array $marks basierend auf dem Array $result zu sortieren. Die Ausgabe ist das sortierte $result Array.
Die Ausgabe:
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
)
)
Das Array wird in absteigender Reihenfolge nach dem Wert des marks-Schlüssels sortiert.
Verwenden Sie die Funktion usort(), um ein Array von assoziativen Arrays nach dem Wert eines gegebenen Schlüssels in PHP zu sortieren
In PHP können wir auch die Funktion usort() verwenden, um ein Array von assoziativen Arrays nach dem Wert eines gegebenen Schlüssels zu sortieren. Diese Funktion sortiert das Array unter Verwendung einer benutzerdefinierten Funktion. Die korrekte Syntax zur Verwendung dieser Funktion lautet wie folgt:
preg_replace($arrayName, $functionName);
Die Funktion usort() akzeptiert zwei Parameter. Die Einzelheiten ihrer Parameter sind wie folgt
| Parameter | Beschreibung | |
|---|---|---|
$arrayName |
obligatorisch | Es ist die Array, die wir sortieren wollen |
$functionName |
obligatorisch | Es ist die benutzerdefinierte Funktion, die das übergebene Array sortiert. |
Sie gibt bei Erfolg TRUE zurück, andernfalls FALSE. Das Programm, das das Array sortiert, ist wie folgt:
<?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);
?>
Ausgabe:
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
)
)
Bei aufsteigender Sortierung wird die Funktion
<?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);
?>
Ausgabe:
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
)
)