Heim  >  Artikel  >  Backend-Entwicklung  >  Wie sortiere ich ein Array mit einer benutzerdefinierten Vergleichsfunktion in PHP und behalte Schlüsselnamen bei?

Wie sortiere ich ein Array mit einer benutzerdefinierten Vergleichsfunktion in PHP und behalte Schlüsselnamen bei?

WBOY
WBOYOriginal
2024-05-04 11:51:01529Durchsuche

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.

PHP 中如何使用自定义比较函数对数组进行排序,并保留键名?

Verwenden Sie benutzerdefinierte Vergleichsfunktionen, um Arrays in PHP zu sortieren und Schlüsselnamen beizubehalten.

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)
  • array:要排序的数组。
  • callable:用于比较数组元素的回调函数。它必须接受两个参数(两个数组元素),并返回一个整数(-1、0 或 1)。

实战案例

以下示例展示了如何使用自定义比较函数对数组中的键名进行排序,同时保留键名:

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

Syntax

Array
(
    [a] => 10
    [b] => 20
    [c] => 5
)
  • array:Das zu sortierende Array.
  • aufrufbar:Callback-Funktion zum Vergleichen von Array-Elementen. Es muss zwei Argumente (zwei Array-Elemente) akzeptieren und eine Ganzzahl (-1, 0 oder 1) zurückgeben.

Praktischer Fall

Das folgende Beispiel zeigt, wie man eine benutzerdefinierte Vergleichsfunktion verwendet, um die Schlüsselnamen in einem Array zu sortieren und dabei die Schlüsselnamen beizubehalten:

rrreee

In diesem Beispiel Die Funktion compare 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn