Heim  >  Artikel  >  Backend-Entwicklung  >  Wie sortiere ich mehrere Arrays oder mehrdimensionale Arrays mit der Funktion array_multisort?

Wie sortiere ich mehrere Arrays oder mehrdimensionale Arrays mit der Funktion array_multisort?

伊谢尔伦
伊谢尔伦Original
2017-06-26 11:33:001544Durchsuche

array_multisort() kann verwendet werden, um mehrere Arrays gleichzeitig zu sortieren oder um mehrdimensionale Arrays nach einer oder mehreren Dimensionen zu sortieren.

array_multisort – Mehrere Arrays oder mehrdimensionale Arrays sortieren
Beschreibung
bool array_multisort ( array ar1 [, Mixed arg [, Mixed ... [, Array ...]]] )
array_multisort
(PHP 4, PHP 5)
Gibt TRUE zurück, wenn erfolgreich, FALSE, wenn fehlgeschlagen.
array_multisort() kann verwendet werden, um mehrere Arrays gleichzeitig zu sortieren oder um mehrdimensionale Arrays nach einer oder mehreren Dimensionen zu sortieren.
Assoziative (String-)Schlüsselnamen bleiben unverändert, numerische Schlüsselnamen werden jedoch neu indiziert.
Das Eingabearray wird als Tabellenspalte behandelt und nach Zeilen sortiert – dies ähnelt der Funktionalität der ORDER BY-Klausel von SQL. Das erste Array ist das zu sortierende Hauptarray. Wenn beim Vergleich festgestellt wird, dass die Zeilen (Werte) im Array gleich sind, werden sie nach der Größe des entsprechenden Werts im nächsten Eingabearray usw. sortiert.
Die Parameterstruktur dieser -Funktion ist etwas ungewöhnlich, aber sehr flexibel. Der erste Parameter muss ein Array sein. Jeder der folgenden Parameter kann ein Array oder ein unten aufgeführtes Sortierflag sein.

Sortierungsreihenfolge-Flags:
SORT_ASC – Sortierung in aufsteigender Reihenfolge

SORT_DESC – Sortierung in absteigender Reihenfolge
Sortierungstyp-Flags:
SORT_REGULAR – Sortierung in aufsteigender Reihenfolge Elemente werden nach der üblichen Methode verglichen

SORT_NUMERIC – Elemente werden nach numerischen Werten verglichen

SORT_STRING – Elemente werden nach Zeichenfolgen verglichen
Nr Nach jedem Array-Sortierflag können zwei vom gleichen Typ angegeben werden. Die nach jedem Array angegebenen Sortierflags gelten nur für dieses Array – zuvor wurden die Standardwerte SORT_ASC und SORT_REGULAR verwendet.

Beispiel 1. Mehrere Arrays sortieren

<?php 
$ar1 = array(“10″, 100, 100, “a”); 
$ar2 = array(1, 3, “2″, 1); 
array_multisort($ar1, $ar2); 
var_dump($ar1); 
var_dump($ar2); 
?>

In diesem Beispiel enthält das erste Array nach dem Sortieren „10“, „a“, 100, 100. Das zweite Array enthält 1,1, „2“, 3. Die Reihenfolge der Elemente im zweiten Array entspricht genau der Reihenfolge der entsprechenden Elemente (100 und 100) im ersten Array.

array(4) { 
[0]=> string(2) “10″ 
[1]=> string(1) “a” 
[2]=> int(100) 
[3]=> int(100) 
} 
array(4) { 
[0]=> int(1) 
[1]=> int(1) 
[2]=> string(1) “2″ 
[3]=> int(3) 
}

Beispiel 2. Sortieren mehrdimensionaler Arrays

<?php 
$ar = array (array (“10″, 100, 100, “a”), array (1, 3, “2″, 1)); 
array_multisort ($ar[0], SORT_ASC, SORT_STRING, 
$ar[1], SORT_NUMERIC, SORT_DESC); 
?>

In diesem Beispiel enthält das erste Array nach dem Sortieren 10, 100, 100, „a“ (aufsteigend als Zeichenfolge sortiert), das zweite Array enthält 1, 3, „2“, 1 (absteigend als numerischer Wert sortiert).
Beispiel 3. Sortieren eines mehrdimensionalen Arrays

<?php 
$ar = array( 
array(“10″, 11, 100, 100, “a”), 
array( 1, 2, “2″, 3, 1) 
); 
array_multisort($ar[0], SORT_ASC, SORT_STRING, 
$ar[1], SORT_NUMERIC, SORT_DESC); 
var_dump($ar); 
?>

In diesem Beispiel wird das erste Array nach dem Sortieren zu „10“, 100, 100, 11, „a“ (Behandelt als String in aufsteigender Reihenfolge). Das zweite Array enthält 1, 3, „2“, 2, 1 (in absteigender Reihenfolge als Zahlen behandelt).

array(2) { 
[0]=> array(5) { 
[0]=> string(2) “10″ 
[1]=> int(100) 
[2]=> int(100) 
[3]=> int(11) 
[4]=> string(1) “a” 
} 
[1]=> array(5) { 
[0]=> int(1) 
[1]=> int(3) 
[2]=> string(1) “2″ 
[3]=> int(2) 
[4]=> int(1) 
} 
}

Beispiel 4. Datenbankergebnisse sortieren
In diesem Beispiel stellt jede Zelle im Datenarray eine Zeile in einer Tabelle dar. Dies ist eine typische Sammlung von Daten, die in einer Datenbank aufgezeichnet werden.
Die Daten im Beispiel sind wie folgt:
Volumen
——-+——–
67 |. 1
85 | |. 2
86 |. 6
67 |. Die Daten werden alle im Array mit dem Namen data gespeichert. Dies wird normalerweise über eine Schleife aus der Datenbank abgerufen, z. B.
mysql_fetch_assoc
().

In diesem Beispiel wird der Band in absteigender Reihenfolge und die Auflage in aufsteigender Reihenfolge sortiert.

Jetzt haben Sie ein Array mit Zeilen, aber array_multisort() erfordert ein Array mit Spalten, also verwenden Sie den folgenden Code, um die Spalten abzurufen und sie dann zu sortieren.
<?php 
$data[] = array(‘volume&#39; => 67, ‘edition&#39; => 2); 
$data[] = array(‘volume&#39; => 86, ‘edition&#39; => 1); 
$data[] = array(‘volume&#39; => 85, ‘edition&#39; => 6); 
$data[] = array(‘volume&#39; => 98, ‘edition&#39; => 2); 
$data[] = array(‘volume&#39; => 86, ‘edition&#39; => 6); 
$data[] = array(‘volume&#39; => 67, ‘edition&#39; => 7); 
?>



Die Datensammlung ist nun sortiert und die Ergebnisse lauten wie folgt:

<?php 
// 取得列的列表 
foreach ($data as $key => $row) { 
$volume[$key] = $row[&#39;volume&#39;]; 
$edition[$key] = $row[&#39;edition&#39;]; 
} 
// 将数据根据 volume 降序排列,根据 edition 升序排列 
// 把 $data 作为最后一个参数,以通用键排序 
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data); 
?>
Band Ausgabe

——-+——–
98 | 2
86 |. 6
67 |. 7

Beispiel 5. Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung
SORT_REGULAR beide Es unterscheidet zwischen Groß- und Kleinbuchstaben und Großbuchstaben werden vor Kleinbuchstaben sortiert.
Um eine Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen, sortieren Sie nach der Kopie des Originalarrays in Kleinbuchstaben.



Das obige Beispiel gibt Folgendes aus:

Array 
( 
[0] => Alpha 
[1] => atomic 
[2] => bank 
[3] => Beta 
)

补充资料:
对于PHP语言中的多维数组排序时最为复杂的一个排序方式。我们在实际编码中将会用到PHP函数array_multisort()来实现这一复杂的排序。例如,首先对一个嵌套数组使用一个普通的关键字进行排序,然后再根据另一个关键字进行排序。这与使用SQL的ORDER BY语句对多个字段进行排序非常相似。
PHP函数asort()利用值排序的具体方式解析
PHP函数arsort()的功能特点详解
PHP自然语言排序的特点介绍
PHP自然语言倒序的具体实现方式
如何运用PHP函数usort()实现自定义排序
Listing J示例为我们具体说明了PHP函数array_multisort()的工作方式:
1, "name" => "Boney M", "rating" => 3), array("id" => 2, "name" => "Take That", "rating" => 1), array("id" => 3, "name" => "The Killers", "rating" => 4), array("id" => 4, "name" => "Lusain", "rating" => 3), ); foreach ($data as $key => $value) { $name[$key] = $value[name]; $rating[$key] = $value[rating]; } array_multisort($rating, $name, $data); print_r($data);?> 这里,我们在$data数组中模拟了一个行和列数组。然后,我使用PHP函数array_multisort()对数据集合进行重排,首先是根据rating进行排序,然后,如果rating相等的话,再根据name排序。它的输出结果如下: 

Array ([0] => Array 
( 
[id] => 2 
[name] => Take That 
[rating] => 1 
) [1] => Array 
( 
[id] => 1 
[name] => Boney M 
[rating] => 3 
) 
[2] => Array 
( 
[id] => 4 
[name] => Lusain 
[rating] => 3 
) 
[3] => Array 
( 
[id] => 3 
[name] => The Killers 
[rating] => 4 
) 
)

PHP函数array_multisort()是PHP中最有用的函数之一,它有非常广泛的应用范围。另外,就如你在例子中所看到的,它能对多个不相关的数组进行排序,也可以使用其中的一个元素作为下次排序的基础,还可以对数据库结果集进行排序。

Das obige ist der detaillierte Inhalt vonWie sortiere ich mehrere Arrays oder mehrdimensionale Arrays mit der Funktion array_multisort?. 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