Heim >Backend-Entwicklung >PHP-Problem >So sortieren Sie Elemente in einem Array in PHP

So sortieren Sie Elemente in einem Array in PHP

PHPz
PHPzOriginal
2023-04-18 15:23:33548Durchsuche

In PHP können Sie zum Sortieren zweidimensionaler Arrays die integrierten Funktionen usort() und uasort() verwenden, um dies zu erreichen. Beide Funktionen können Elemente in einem Array sortieren, die Implementierung unterscheidet sich jedoch geringfügig. usort()uasort()来实现。这两个函数都可以对数组中的元素进行排序,但具体实现方式略有不同。

usort()函数会在原数组上排序并返回布尔值,而uasort()函数则会对原数组进行排序,但保留键值对之间的关联,亦即不新建索引数组。下面我们将分别介绍这两个函数的使用方法。

usort()函数

usort()函数的第一个参数是需要排序的数组,第二个参数是一个比较函数,其实现方式是通过在需要排序的数组中交换元素位置并返回布尔值实现。

//示例数组$students
$students = array(
    array("name" => "张三", "age" => 22),
    array("name" => "李四", "age" => 20),
    array("name" => "王五", "age" => 25)
);

//比较函数cmp
function cmp($a, $b){
    if ($a["age"] == $b["age"]) {
        return 0;
    }
    return ($a["age"] < $b["age"]) ? -1 : 1;
}

//使用usort()排序
usort($students, "cmp");

//输出结果
var_dump($students);

上面的代码中,我们首先定义了一个包含三个元素的2维数组$students,每个元素都包含"name"和"age"两个键值对。

接下来,我们定义了一个比较函数cmp,该函数通过比较两个元素在"age"键值对上的值,决定元素之间的相对顺序。 如果两个元素的"age"相等,则返回0;如果$a的"age"小于$b的"age",则返回-1,表示$a在$b的前面;否则返回1,表示$a在$b的后面。

最后,我们使用usort()函数对数组$students按照cmp函数定义的规则进行排序。输出结果可以看到数组中的元素已经按照"age"键值对从小到大排序了。

uasort()函数

uasort()函数的实现方式与usort()类似,但不同的是保留了键值对之间的关联,不新建索引数组。因此,它需要一个更复杂的比较函数,既要比较元素大小,也需要保持键值对的关联关系。

//示例数组$students
$students = array(
    "stu1" => array("name" => "张三", "age" => 22),
    "stu2" => array("name" => "李四", "age" => 20),
    "stu3" => array("name" => "王五", "age" => 25)
);

//比较函数cmp
function cmp($a, $b){
    if ($a["age"] == $b["age"]) {
        return 0;
    }
    return ($a["age"] < $b["age"]) ? -1 : 1;
}

//使用usort()排序
uasort($students, "cmp");

//输出结果
var_dump($students);

上面的代码中,我们首先定义了一个包含三个元素的2维关联数组$students,每个元素都包含"name"和"age"两个键值对。区别在于,这里我们用字符串"stu1"、"stu2"和"stu3"作为了数组的键值,而不是前面的数字索引。

定义比较函数cmp的方式与usort()相同。不同的地方是,我们在调用uasort()函数时,传递了数组$students和比较函数cmp作为参数。该函数会根据cmp规则对数组进行排序,排序的结果保留了原有的联合键值关系。

最后,我们通过var_dump()函数输出排序结果。可以看到,输出的结果依旧是一个关联数组,但元素已经按照"age"键值对从小到大排序。

除了usort()uasort()以外,PHP还提供了一系列其他的数组排序函数,例如asort()arsort()ksort()krsort()

Die Funktion usort() sortiert das ursprüngliche Array und gibt einen booleschen Wert zurück, während die Funktion uasort() das ursprüngliche Array sortiert. aber Die Zuordnung zwischen Schlüssel-Wert-Paaren bleibt erhalten, das heißt, es wird kein neues Indexarray erstellt. Im Folgenden stellen wir vor, wie diese beiden Funktionen jeweils verwendet werden. #🎜🎜#

usort()Funktion

#🎜🎜#usort()Der erste Parameter der Funktion ist das Array, das sortiert werden muss und der zweite Der erste Parameter ist eine Vergleichsfunktion, die durch den Austausch der Elementpositionen im zu sortierenden Array und die Rückgabe eines booleschen Werts implementiert wird. #🎜🎜#rrreee#🎜🎜#Im obigen Code definieren wir zunächst ein zweidimensionales Array $students mit drei Elementen. Jedes Element enthält zwei Schlüssel-Wert-Paare „Name“ und „Alter“. #🎜🎜##🎜🎜#Als nächstes definieren wir eine Vergleichsfunktion cmp, die die relative Beziehung zwischen den Elementen bestimmt, indem sie die Werte der beiden Elemente auf dem Schlüsselwert „Alter“ vergleicht Paarreihenfolge. Wenn das „Alter“ der beiden Elemente gleich ist, wird 0 zurückgegeben. Wenn das „Alter“ von $a kleiner als das „Alter“ von $b ist, wird -1 zurückgegeben, was angibt, dass $a vor $ steht b; andernfalls wird 1 zurückgegeben, was darauf hinweist, dass $a Nach $b. #🎜🎜##🎜🎜#Schließlich verwenden wir die Funktion usort(), um das Array $students gemäß den durch die Funktion cmp definierten Regeln zu sortieren. Anhand der Ausgabe können Sie erkennen, dass die Elemente im Array entsprechend dem Schlüssel-Wert-Paar „Alter“ von klein nach groß sortiert wurden. #🎜🎜#

uasort()function

#🎜🎜#uasort()Die Implementierung der Funktion ist die gleiche wie usort( )Ähnlich, aber der Unterschied besteht darin, dass die Zuordnung zwischen Schlüssel-Wert-Paaren beibehalten wird und kein neues Indexarray erstellt wird. Daher ist eine komplexere Vergleichsfunktion erforderlich, die nicht nur die Elementgrößen vergleicht, sondern auch die Zuordnung von Schlüssel-Wert-Paaren aufrechterhält. #🎜🎜#rrreee#🎜🎜#Im obigen Code definieren wir zunächst ein zweidimensionales assoziatives Array $students mit drei Elementen. Jedes Element enthält zwei Schlüssel-Wert-Paare „Name“ und „Alter“. Der Unterschied besteht darin, dass wir hier die Zeichenfolgen „stu1“, „stu2“ und „stu3“ als Schlüsselwerte des Arrays anstelle des vorherigen numerischen Index verwenden. #🎜🎜##🎜🎜#Die Art und Weise, die Vergleichsfunktion cmp zu definieren, ist die gleiche wie bei usort(). Der Unterschied besteht darin, dass wir beim Aufruf der Funktion uasort() das Array $students und die Vergleichsfunktion cmp als Parameter übergeben. Diese Funktion sortiert das Array gemäß den cmp-Regeln und das sortierte Ergebnis behält die ursprüngliche gemeinsame Schlüssel-Wert-Beziehung bei. #🎜🎜##🎜🎜#Abschließend geben wir die Sortierergebnisse über die Funktion var_dump() aus. Wie Sie sehen können, ist das Ausgabeergebnis immer noch ein assoziatives Array, aber die Elemente wurden entsprechend dem Schlüssel-Wert-Paar „Alter“ von klein nach groß sortiert. #🎜🎜##🎜🎜#Zusätzlich zu usort() und uasort() bietet PHP auch eine Reihe weiterer Array-Sortierfunktionen, wie zum Beispiel asort ( ), arsort(), ksort(), krsort() usw. Entwickler können entsprechend auswählen tatsächliche Bedürfnisse. #🎜🎜#

Das obige ist der detaillierte Inhalt vonSo sortieren Sie Elemente in einem Array in PHP. 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