Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der benutzerdefinierten PHP-Funktionen und Beispiele für die Array-Sortierung

Detaillierte Erläuterung der benutzerdefinierten PHP-Funktionen und Beispiele für die Array-Sortierung

伊谢尔伦
伊谢尔伦Original
2017-06-26 11:38:111780Durchsuche

In Bezug auf die Sortierung sortieren wir sie im Allgemeinen über die Datenbank oder nosql (z. B. Redis) und geben sie dann zur direkten Verwendung an das Programm aus. Manchmal müssen wir das Array jedoch direkt über PHP und in PHP sortieren Die am häufigsten verwendeten Objekte und Arrays zum Speichern von Daten sind Objekte und Arrays, aber diejenigen, die am häufigsten verarbeitet werden, sind Arrays, da es sehr umfangreiche integrierte Funktionsbibliotheken gibt (tatsächlich können auch Objekte verstanden werden). (bis zu einem gewissen Grad wie ein Array), können uns diese Funktionsbibliotheken dabei helfen, bestimmte Funktionen weitgehend zu implementieren. Zu den häufig verwendeten Systemfunktionen gehören sort, asort, arsort, ksort, krsort usw. Hier spreche ich hauptsächlich über die Sortierung von zweidimensionalen Arrays , zwei Methoden:

1. Verwenden Sie die PHP-eigene Funktion

array_multisort zum Sortieren

Ausgabeergebnis:
<?php
  $data = array();
    $data[] = array(&#39;volume&#39; => 67, &#39;edition&#39; => 2);
    $data[] = array(&#39;volume&#39; => 86, &#39;edition&#39; => 1);
    $data[] = array(&#39;volume&#39; => 85, &#39;edition&#39; => 6);
    $data[] = array(&#39;volume&#39; => 98, &#39;edition&#39; => 2);
    $data[] = array(&#39;volume&#39; => 86, &#39;edition&#39; => 6);
    $data[] = array(&#39;volume&#39; => 67, &#39;edition&#39; => 7);
    // 取得列的列表
    foreach ($data as $key => $row)
    {
        $volume[$key]  = $row[&#39;volume&#39;];
        $edition[$key] = $row[&#39;edition&#39;];
    }
    array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
    print_r($data);
?>

Array
(
    [0] => Array
        (
            [volume] => 98
            [edition] => 2
        )
    [1] => Array
        (
            [volume] => 86
            [edition] => 1
        )
    [2] => Array
        (
            [volume] => 86
            [edition] => 6
        )
    [3] => Array
        (
            [volume] => 85
            [edition] => 6
        )
    [4] => Array
        (
            [volume] => 67
            [edition] => 2
        )
    [5] => Array
        (
            [volume] => 67
            [edition] => 7
        )
)
2 >Benutzerdefinierte Funktion

Sortieren 1Ausgabeergebnis:

<?php
   $data = array();
    $data[] = array(&#39;volume&#39; => 67, &#39;edition&#39; => 2);
    $data[] = array(&#39;volume&#39; => 86, &#39;edition&#39; => 1);
    $data[] = array(&#39;volume&#39; => 85, &#39;edition&#39; => 6);
    $data[] = array(&#39;volume&#39; => 98, &#39;edition&#39; => 2);
    $data[] = array(&#39;volume&#39; => 86, &#39;edition&#39; => 6);
    $data[] = array(&#39;volume&#39; => 67, &#39;edition&#39; => 7);
    // 取得列的列表
    foreach ($data as $key => $row)
    {
        $volume[$key]  = $row[&#39;volume&#39;];
        $edition[$key] = $row[&#39;edition&#39;];
    }
    $ret = arraySort($data, &#39;volume&#39;, &#39;desc&#39;);
    print_r($ret);
    /**
     * @desc arraySort php二维数组排序 按照指定的key 对数组进行排序
     * @param array $arr 将要排序的数组
     * @param string $keys 指定排序的key
     * @param string $type 排序类型 asc | desc
     * @return array
     */
    function arraySort($arr, $keys, $type = &#39;asc&#39;) {
        $keysvalue = $new_array = array();
        foreach ($arr as $k => $v){
            $keysvalue[$k] = $v[$keys];
        }
        $type == &#39;asc&#39; ? asort($keysvalue) : arsort($keysvalue);
        reset($keysvalue);
        foreach ($keysvalue as $k => $v) {
           $new_array[$k] = $arr[$k];
        }
        return $new_array;
    }
?>

Ein Unterschied zwischen dieser benutzerdefinierten Funktion und der Systemfunktion besteht darin, dass die benutzerdefinierte Funktion nur For unterstützt Wenn Sie die Sortierung mehrerer Schlüssel unterstützen möchten, müssen Sie die Systemfunktion array_multisort mehrmals ausführen. Die Systemfunktion ist sehr leistungsfähig Es wird empfohlen, die Systemfunktion zu verwenden, da sie unten in C implementiert ist. Hier ist nur ein Beispiel, um zu veranschaulichen, wie ein Array mithilfe einer benutzerdefinierten Funktion sortiert werden kann Weitere Sortierregeln. Es wird immer noch häufig in Szenarien wie Ranglisten, Bestenlisten und Ergebnissen verwendet.

Array
(
  [3] => Array
     (
           [volume] => 98
           [edition] => 2
        )
    [4] => Array
        (
            [volume] => 86
            [edition] => 6
        )
    [1] => Array
        (
            [volume] => 86
            [edition] => 1
        )
    [2] => Array
        (
            [volume] => 85
            [edition] => 6
        )
    [5] => Array
        (
            [volume] => 67
            [edition] => 7
        )
    [0] => Array
        (
            [volume] => 67
            [edition] => 2
        )
)


3. Benutzerdefinierte Funktionssortierung 2

Die folgende Funktion sortiert ein gegebenes zweidimensionales Array nach dem angegebenen Schlüsselwert . Definition:

Es kann ein zweidimensionales Array nach dem angegebenen Schlüsselwert sortieren oder eine aufsteigende oder absteigende Reihenfolge angeben (die Standardeinstellung ist aufsteigende Reihenfolge:

function array_sort($arr,$keys,$type=&#39;asc&#39;){ 
 $keysvalue = $new_array = array();
 foreach ($arr as $k=>$v){
  $keysvalue[$k] = $v[$keys];
 }
 if($type == &#39;asc&#39;){
  asort($keysvalue);
 }else{
  arsort($keysvalue);
 }
 reset($keysvalue);
 foreach ($keysvalue as $k=>$v){
  $new_array[$k] = $arr[$k];
 }
 return $new_array; 
}
).

Das Obige ist die Sortierung des zweidimensionalen Arrays $array nach „Preis“ von niedrig nach hoch.

$array = array(
 array(&#39;name&#39;=>&#39;手机&#39;,&#39;brand&#39;=>&#39;诺基亚&#39;,&#39;price&#39;=>1050),
 array(&#39;name&#39;=>&#39;笔记本电脑&#39;,&#39;brand&#39;=>&#39;lenovo&#39;,&#39;price&#39;=>4300),
 array(&#39;name&#39;=>&#39;剃须刀&#39;,&#39;brand&#39;=>&#39;飞利浦&#39;,&#39;price&#39;=>3100),
 array(&#39;name&#39;=>&#39;跑步机&#39;,&#39;brand&#39;=>&#39;三和松石&#39;,&#39;price&#39;=>4900),
 array(&#39;name&#39;=>&#39;手表&#39;,&#39;brand&#39;=>&#39;卡西欧&#39;,&#39;price&#39;=>960),
 array(&#39;name&#39;=>&#39;液晶电视&#39;,&#39;brand&#39;=>&#39;索尼&#39;,&#39;price&#39;=>6299),
 array(&#39;name&#39;=>&#39;激光打印机&#39;,&#39;brand&#39;=>&#39;惠普&#39;,&#39;price&#39;=>1200)
);
$ShoppingList = array_sort($array,&#39;price&#39;);
print_r($ShoppingList);

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der benutzerdefinierten PHP-Funktionen und Beispiele für die Array-Sortierung. 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