Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung des zweidimensionalen Array-Sortierproblems in PHP

Detaillierte Erklärung des zweidimensionalen Array-Sortierproblems in PHP

高洛峰
高洛峰Original
2016-12-22 11:34:471223Durchsuche

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.

rsort sortiert das Array in umgekehrter Reihenfolge. Die Verwendung ist dieselbe wie bei sort Sortiert das Array und behält die Indexbeziehung bei. Im Allgemeinen gilt: Behalten Sie die Indexbeziehung bei

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!

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