Heim > Artikel > Backend-Entwicklung > Wie sortiere ich ein Array mit einer benutzerdefinierten Vergleichsfunktion in PHP und behalte Schlüsselnamen bei?
Durch die Verwendung benutzerdefinierter Vergleichsfunktionen in PHP können Arrays sortiert und Schlüsselnamen beibehalten werden. Dazu können Sie die Funktion usort() verwenden, die als Parameter ein Array und eine Callback-Funktion akzeptiert. Die Rückruffunktion empfängt zwei Array-Elemente und gibt eine Ganzzahl (-1, 0 oder 1) zurück, die die Sortierreihenfolge angibt.
Die Verwendung benutzerdefinierter Vergleichsfunktionen zum Sortieren von Arrays ist ein häufiger Vorgang bei Array-Operationen. In PHP lässt sich dies einfach mit der Funktion usort()
bewerkstelligen. usort()
函数轻松实现此目的。
usort(array, callable)
以下示例展示了如何使用自定义比较函数对数组中的键名进行排序,同时保留键名:
<?php // 待排序的数组 $arr = [ 'a' => 10, 'c' => 5, 'b' => 20, ]; // 自定义比较函数 $compare = function ($a, $b) { return strcmp($a['key'], $b['key']); }; usort($arr, $compare); // 输出排序后的数组 print_r($arr);
在这个例子中,compare
函数将两个键名($a['key']
和 $b['key']
)作为参数,并使用 strcmp()
函数对其进行比较。strcmp()
函数返回 -1、0 或 1,指示第一个字符串是否小于、等于或大于第二个字符串。
调用 usort()
函数时,它将指定的比较函数应用于 $arr
数组中的每个元素。如果 compare
Array ( [a] => 10 [b] => 20 [c] => 5 )
rrreee
In diesem Beispiel Die Funktioncompare
nimmt zwei Schlüsselnamen ($a['key']
und $b['key']
) als Parameter und verwendet The Die Funktion strcmp()
vergleicht sie. Die Funktion strcmp()
gibt -1, 0 oder 1 zurück und gibt an, ob die erste Zeichenfolge kleiner, gleich oder größer als die zweite Zeichenfolge ist. Wenn die Funktion usort()
aufgerufen wird, wendet sie die angegebene Vergleichsfunktion auf jedes Element im Array $arr
an. Wenn die Funktion compare
-1 zurückgibt, wird das erste Element vor dem zweiten Element sortiert. Wenn sie 1 zurückgibt, gilt das Gegenteil, wenn sie 0 zurückgibt, bleibt die Reihenfolge der Elemente unverändert. 🎜🎜Die endgültige Ausgabe lautet: 🎜rrreee🎜Das Array wird entsprechend den Schlüsselnamen von klein nach groß sortiert, wobei die Schlüsselnamen beibehalten werden. 🎜Das obige ist der detaillierte Inhalt vonWie sortiere ich ein Array mit einer benutzerdefinierten Vergleichsfunktion in PHP und behalte Schlüsselnamen bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!