Heim  >  Artikel  >  Backend-Entwicklung  >  So sortieren Sie ein Array basierend auf zwei Feldern in PHP

So sortieren Sie ein Array basierend auf zwei Feldern in PHP

PHPz
PHPzOriginal
2023-04-18 09:06:04879Durchsuche

Wenn wir in PHP ein Array sortieren müssen, können wir integrierte Funktionen wie sort() und rsort() verwenden, um die Elemente im Array zu sortieren. Manchmal müssen wir jedoch basierend auf zwei Feldern im Array sortieren und dann die Funktion usort() verwenden.

usort – Werte in einem Array mit einer benutzerdefinierten Vergleichsfunktion sortieren

Syntax: bool usort ( array &$array, callable $value_compare_func )

Diese Funktion sortiert die Werte im Array mithilfe der angegebenen Vergleichsfunktion. Es ist zu beachten, dass sich diese Funktion direkt auf das ursprüngliche Array auswirkt und nicht das sortierte Array zurückgibt.

Nutzungsszenario

Bei einigen komplexen Anwendungen ist es manchmal erforderlich, nach mehreren Feldern zu sortieren, z. B. zuerst nach Preis und dann nach Verkaufsvolumen zu sortieren Wenn der Preis derselbe ist, müssen wir die Funktion usort() verwenden, um dies zu erreichen.

Beispielcode

Das Folgende ist ein tatsächliches Beispiel für die Verwendung der Funktion usort() zum Sortieren eines Arrays. Angenommen, wir haben eine Produktpalette, die Produktname, Preis, Verkaufsvolumen und andere Informationen enthält. Jetzt müssen wir die Produkte nach Preis und Verkaufsvolumen sortieren.

$products = [
   [
      "name" => "商品A",
      "price" => 100,
      "sales" => 200
   ],
   [
      "name" => "商品B",
      "price" => 120,
      "sales" => 150
   ],
   [
      "name" => "商品C",
      "price" => 80,
      "sales" => 300
   ],
];

function cmp($a, $b) {
   if ($a['price'] == $b['price']) {
      return $a['sales'] < $b[&#39;sales&#39;] ? 1 : -1;
   }
   return $a[&#39;price&#39;] > $b['price'] ? 1 : -1;
}

usort($products, "cmp");

print_r($products);

Laufendes Ergebnis:

Array
(
    [0] => Array
        (
            [name] => 商品C
            [price] => 80
            [sales] => 300
        )

    [1] => Array
        (
            [name] => 商品A
            [price] => 100
            [sales] => 200
        )

    [2] => Array
        (
            [name] => 商品B
            [price] => 120
            [sales] => 150
        )
)

Hier definieren wir eine cmp()-Funktion, die verwendet wird, um den Preis und das Verkaufsvolumen zweier Produkte zu vergleichen und sie nach Preis zu sortieren von klein nach groß, Sortierung nach Verkaufsvolumen von groß nach klein. Verwenden Sie dann die Funktion usort(), um das Produktarray zu sortieren und die sortierten Ergebnisse auszudrucken.

Zusammenfassung

Mit der Funktion usort() können Arrays flexibel sortiert und basierend auf mehreren Feldern sortiert werden, um komplexere Anwendungsanforderungen zu erfüllen. Hierbei ist zu beachten, dass die Sortierfunktion zwei Array-Elemente vergleicht, sodass $a und $b jeweils zwei Elemente im Array darstellen. Die Funktion muss einen der drei Werte positive Zahl, negative Zahl und 0 zurückgeben , was anzeigt, dass das Verhältnis von $a zu $b größer, kleiner oder gleich ist.

Das obige ist der detaillierte Inhalt vonSo sortieren Sie ein Array basierend auf zwei Feldern 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