Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erklärung des zweidimensionalen Array-Sortierproblems in PHP
Für die zweidimensionale Array-Sortierung in PHP können Sie die in PHP integrierte Funktion uasort() verwenden
Beispiel 1:
Verwenden Sie eine benutzerdefinierte Vergleichsfunktion, um die Werte zu sortieren im Array und pflegen Sie den Index. Die zugehörigen
Rückruffunktionen lauten wie folgt: Beachten Sie, dass wenn der Rückgabewert der Rückruffunktion eine negative Zahl oder falsch ist, dies bedeutet, dass der erste Parameter der Rückruffunktion ist kommt zuerst und der zweite Parameter wird zuletzt angeordnet
$person = array( array('num'=>'001','id'=>6,'name'=>'zhangsan','age'=>21), array('num'=>'001','id'=>7,'name'=>'ahangsan','age'=>23), array('num'=>'003','id'=>1,'name'=>'bhangsan','age'=>23), array('num'=>'001','id'=>3,'name'=>'dhangsan','age'=>23), ); //负数或者false表示第一个参数应该在前 function sort_by_name($x,$y){ return strcasecmp($x['name'],$y['name']); }
wird wie folgt verwendet:
uasort($person,'sort_by_name');
Das Folgende ist eine zweidimensionale Array-Sortiermethode für Referenz- und Interviewzwecke:
//$array 要排序的数组 //$row 排序依据列 //$type 排序类型[asc or desc] //return 排好序的数组 function array_sort($array,$row,$type){ $array_temp = array(); foreach($array as $v){ $array_temp[$v[$row]] = $v; } if($type == 'asc'){ ksort($array_temp); }elseif($type='desc'){ krsort($array_temp); }else{ } return $array_temp; }
Beispiel 2:
Eindimensionales Array Die Sortierung kann mit einigen Methoden wie asort und ksort erfolgen, die relativ einfach sind. Wie implementiert man die Sortierung zweidimensionaler Arrays? Mit array_multisort und usort kann
erreicht werden. Beispielsweise das folgende Array:
Der Code lautet wie folgt:
$users = array( array('name' => 'tom', 'age' => 20) , array('name' => 'anny', 'age' => 18) , array('name' => 'jack', 'age' => 22) );
Ich hoffe, es kann nach Alter von klein nach groß sortiert werden. Der Autor hat zwei Methoden herausgesucht und mit Ihnen geteilt.
1. Verwenden Sie array_multisort
Die Verwendung dieser Methode ist aufwändiger. Sie müssen das Alter extrahieren, es in einem eindimensionalen Array speichern und es dann anordnen in aufsteigender Reihenfolge nach Alter. Der spezifische Code lautet wie folgt:
Der Code lautet wie folgt:
$ages = array(); foreach ($users as $user) { $ages[] = $user['age']; } array_multisort($ages, SORT_ASC, $users);
Nach der Ausführung $ „users“ ist das sortierte Array. Ja, Sie können es ausdrucken und einen Blick darauf werfen. Wenn Sie zuerst in aufsteigender Reihenfolge nach Alter und dann in aufsteigender Reihenfolge nach Namen sortieren müssen, ist die Methode dieselbe wie oben, d 🎜>
Der Code lautet wie folgt:
array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);
2. Verwenden Sie usort
Der größte Vorteil dieser Methode besteht darin, dass Sie dies tun können Passen Sie einige komplexere Sortiermethoden an. Sortieren Sie beispielsweise in absteigender Reihenfolge nach der Länge des Namens:
Der Code lautet wie folgt:
usort($users, function($a, $b) { $al = strlen($a['name']); $bl = strlen($b['name']); if ($al == $bl) return 0; return ($al > $bl) ? -1 : 1; });Anonyme Funktionen werden hier verwendet und können extrahiert werden ggf. separat. Unter diesen können $a und $b als Elemente im Array $users verstanden werden. Sie können den Namenswert direkt indizieren, die Länge berechnen und dann die Längen vergleichen. ========================================== == ========================
Hier übrigens ein paar Funktionen der PHP-Sortierung
sort für Arrays Die Sortierung ist im Allgemeinen auf eindimensionale Indexarrays anwendbar und verwaltet den Index nicht.
ksort Sortiert das Array nach Schlüsselnamen
ksort Sortiert das Array Umgekehrte Sortierung nach Schlüsselname
Für detailliertere Erklärungen der zweidimensionalen Array-Sortierung Bei PHP-Problemen und verwandten Artikeln beachten Sie bitte die chinesische PHP-Website!