


Array_multisort Komplettlösung für mehrdimensionale Array-Sortierung
1. Schauen wir uns zunächst die einfachste Situation an. Es gibt zwei Arrays:
$arr1 = array(1,9,5); $arr2 = array(6,2,4); array_multisort($arr1,$arr2); print_r($arr1); // 得到的顺序是1,5,9 print_r($arr2); // 得到的顺序是6,4,2
Ich schätze, dass die Werte der beiden Arrays von Anfang bis Ende übereinstimmen: 1 entspricht 6, 9 entspricht 2, 5 entspricht 4.
Lassen Sie uns ein weiteres Array hinzufügen und sehen, was passiert:
$arr1 = array(1,9,5); $arr2 = array(6,2,4); $arr3 = array(3,7,8); array_multisort($arr1,$arr2,$arr3);
3. Das Gleiche gilt für andere Elemente. Diese Entsprechung wird im Handbuch als „Beibehaltung der ursprünglichen Schlüsselnamenzuordnung während der Sortierung“ bezeichnet.
Sie können sich jedes Array auch als Spalte in einer Datenbanktabelle vorstellen. Die entsprechenden 1,6,3 sind eine Datenzeile und 9,2,7 sind eine andere Datenzeile. . .
array_multisort sortiert zuerst nach dem ersten Array (stellen Sie sich eine Spalte vor). Wenn die Werte des ersten Arrays (Spalte) gleich sind, dann sortieren Sie nach dem zweiten Array (Spalte).
Sie können zum Testen das folgende Programm verwenden:
$arr1 = array(1,9,5,9); $arr2 = array(6,2,4,1); $arr3 = array(3,7,8,0); array_multisort($arr1,$arr2,$arr3);
Ausgabe:
Array ( [0] => 1 [1] => 5 [2] => 9 [3] => 9 ) Array ( [0] => 6 [1] => 4 [2] => 1 [3] => 2 ) Array ( [0] => 3 [1] => 8 [2] => 0 [3] => 7 )
Hier stellen wir fest, dass $arr1 normalerweise in aufsteigender Reihenfolge sortiert wurde. Aber $arr2 und $arr3 sind nicht sortiert.
Aber als ich genau hinsah, stellte ich fest, dass jedes Element dieser drei Arrays tatsächlich eins zu eins entsprach.
2. Als nächstes erklären wir die Parameter von array_multisort. Die Parameter dieser Funktion sind sehr flexibel. Der einfachste Fall besteht darin, wie oben gezeigt 1 oder n Arrays als Parameter zu verwenden. Dabei ist zu beachten, dass die Anzahl der Elemente in jedem Array gleich sein muss, da sonst eine Warnung zum Fehlschlagen der Sortierung führt. So array_multisort($arr1,$arr2,$arr3); Standardmäßig werden alle Arrays in aufsteigender Reihenfolge sortiert. Wenn Sie $arr2 in absteigender Reihenfolge sortieren und als Zeichenfolge vergleichen möchten, müssen Sie dies tun schreibe:
array_multisort($arr1, $arr2, SORT_DESC, SORT_STRING, $arr3);
Jedem Array kann ein Sortierreihenfolge-Flag oder ein Sortiertyp-Flag oder beides folgen Flaggen können gleichzeitig erscheinen. Nach jedem Array kann jedoch nur ein Sortierflag jedes Typs erscheinen.
Details sind wie folgt:
Sortierungsreihenfolge-Flags:
SORT_ASC – Sortierung in aufsteigender Reihenfolge (Standard)
SORT_DESC – Sortierung in absteigender Reihenfolge
Sortierungstyp-Flag:
SORT_REGULAR – Elemente nach der üblichen Methode vergleichen (Standard)
SORT_NUMERIC – Elemente nach numerischen Werten vergleichen
SORT_STRING – Vergleichen Sie Elemente nach Zeichenfolgen
3. Welchen praktischen Effekt hat array_multisort?
Normalerweise haben wir einige mehrdimensionale Arrays, die sortiert werden müssen:
$guys = Array( [0] => Array ( [name] => jake [score] => 80 [grade] => A ) [1] => Array ( [name] => jin [score] => 70 [grade] => A ) [2] => Array ( [name] => john [score] => 80 [grade] => A ) [3] => Array ( [name] => ben [score] => 20 [grade] => B ) )
Zum Beispiel möchten wir Sortieren Sie nach Noten in umgekehrter Reihenfolge, wenn die Noten gleich sind. Sortieren Sie einfach nach Namen in aufsteigender Reihenfolge.
Zu diesem Zeitpunkt müssen wir zwei weitere Arrays entsprechend der Reihenfolge von $guys erstellen: >
$scores = array(80,70,80,20); $names = array('jake','jin','john','ben');
Das ist es
Kann Ist es flexibler? Muss ich jedes Mal, wenn ich sortieren möchte, zusätzliche Arrays besorgen?Tatsächlich ist es gut in der helper_array-Klasse von qeephp gekapselt. Hier sind die beiden Methoden. Wer es benötigt, kann es selbst ändern:
array_multisort($scores, SORT_DESC, $names, $guys);
/** * 根据指定的键对数组排序 * * 用法: * @code php * $rows = array( * array('id' => 1, 'value' => '1-1', 'parent' => 1), * array('id' => 2, 'value' => '2-1', 'parent' => 1), * array('id' => 3, 'value' => '3-1', 'parent' => 1), * array('id' => 4, 'value' => '4-1', 'parent' => 2), * array('id' => 5, 'value' => '5-1', 'parent' => 2), * array('id' => 6, 'value' => '6-1', 'parent' => 3), * ); * * $rows = Helper_Array::sortByCol($rows, 'id', SORT_DESC); * dump($rows); * // 输出结果为: * // array( * // array('id' => 6, 'value' => '6-1', 'parent' => 3), * // array('id' => 5, 'value' => '5-1', 'parent' => 2), * // array('id' => 4, 'value' => '4-1', 'parent' => 2), * // array('id' => 3, 'value' => '3-1', 'parent' => 1), * // array('id' => 2, 'value' => '2-1', 'parent' => 1), * // array('id' => 1, 'value' => '1-1', 'parent' => 1), * // ) * @endcode * * @param array $array 要排序的数组 * @param string $keyname 排序的键 * @param int $dir 排序方向 * * @return array 排序后的数组 */ static function sortByCol($array, $keyname, $dir = SORT_ASC) { return self::sortByMultiCols($array, array($keyname => $dir)); }

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Alipay PHP ...

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...
