PHP二維數組排序 array_multisort

來源:互聯網
上載者:User
這篇文章主要介紹的內容是關於PHP二維數組排序 array_multisort,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

對2維數組或者多維陣列排序是常見的問題,在PHP中我們有個專門的多維陣列排序函數,下面簡單介紹下:

array_multisort(array1,sorting order, sorting type,array2,array3..) 是對多個數組或多維陣列進行排序的函數。
array1 必需。規定輸入的數組。
sorting order 可選。規定排列順序。可能的值是 SORT_ASC 和 SORT_DESC。
sorting type 可選。規定排序類型。可能的值是SORT_REGULAR、SORT_NUMERIC和SORT_STRING。
array2 可選。規定輸入的數組。
array3 可選。規定輸入的數組。

參數中的數組被當成一個表的列並以行來進行排序 - 這類似 SQL 的 ORDER BY 子句的功能。第一個數組是要排序的主要數組。數組中的行(值)比較為相同的話,就會按照下一個輸入數組中相應值的大小進行排序,依此類推。
第一個參數是數組,隨後的每一個參數可能是數組,也可能是下面的排序次序標誌(排序標誌用於更改預設的排列順序)之一:
SORT_ASC - 預設,按升序排列。(A-Z)
SORT_DESC - 按降序排列。(Z-A)
隨後可以指定排序的類型:
SORT_REGULAR - 預設。將每一項按常規順序排列。
SORT_NUMERIC - 將每一項按數字順序排列。

SORT_STRING - 將每一項按字母順序排列

<?php        function my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){          if(is_array($arrays)){              foreach ($arrays as $array){                  if(is_array($array)){                      $key_arrays[] = $array[$sort_key];                  }else{                      return false;                  }              }          }else{              return false;          }         array_multisort($key_arrays,$sort_order,$sort_type,$arrays);          return $arrays;      }        $person =  array(                     array('id'=>1,'name'=>'fj','weight'=>100,'height'=>180),                     array('id'=>2,'name'=>'tom','weight'=>53,'height'=>150),                     array('id'=>3,'name'=>'jerry','weight'=>120,'height'=>156),                     array('id'=>4,'name'=>'bill','weight'=>110,'height'=>190),                     array('id'=>5,'name'=>'linken','weight'=>80,'height'=>200),                     array('id'=>6,'name'=>'madana','weight'=>95,'height'=>110),                     array('id'=>7,'name'=>'jordan','weight'=>70,'height'=>170)                 );            var_dump($person);            $person = my_sort($person,'name',SORT_ASC,SORT_STRING);        var_dump($person);            $person = my_sort($person,'weight');        var_dump($person); ?>

結果如下:

array (size=7)  0 =>    array (size=4)      'id' => int 1      'name' => string 'fj' (length=2)      'weight' => int 100      'height' => int 180  1 =>    array (size=4)      'id' => int 2      'name' => string 'tom' (length=3)      'weight' => int 53      'height' => int 150  2 =>    array (size=4)      'id' => int 3      'name' => string 'jerry' (length=5)      'weight' => int 120      'height' => int 156  3 =>    array (size=4)      'id' => int 4      'name' => string 'bill' (length=4)      'weight' => int 110      'height' => int 190  4 =>    array (size=4)      'id' => int 5      'name' => string 'linken' (length=6)      'weight' => int 80      'height' => int 200  5 =>    array (size=4)      'id' => int 6      'name' => string 'madana' (length=6)      'weight' => int 95      'height' => int 110  6 =>    array (size=4)      'id' => int 7      'name' => string 'jordan' (length=6)      'weight' => int 70      'height' => int 170array (size=7)  0 =>    array (size=4)      'id' => int 4      'name' => string 'bill' (length=4)      'weight' => int 110      'height' => int 190  1 =>    array (size=4)      'id' => int 1      'name' => string 'fj' (length=2)      'weight' => int 100      'height' => int 180  2 =>    array (size=4)      'id' => int 3      'name' => string 'jerry' (length=5)      'weight' => int 120      'height' => int 156  3 =>    array (size=4)      'id' => int 7      'name' => string 'jordan' (length=6)      'weight' => int 70      'height' => int 170  4 =>    array (size=4)      'id' => int 5      'name' => string 'linken' (length=6)      'weight' => int 80      'height' => int 200  5 =>    array (size=4)      'id' => int 6      'name' => string 'madana' (length=6)      'weight' => int 95      'height' => int 110  6 =>    array (size=4)      'id' => int 2      'name' => string 'tom' (length=3)      'weight' => int 53      'height' => int 150array (size=7)  0 =>    array (size=4)      'id' => int 2      'name' => string 'tom' (length=3)      'weight' => int 53      'height' => int 150  1 =>    array (size=4)      'id' => int 7      'name' => string 'jordan' (length=6)      'weight' => int 70      'height' => int 170  2 =>    array (size=4)      'id' => int 5      'name' => string 'linken' (length=6)      'weight' => int 80      'height' => int 200  3 =>    array (size=4)      'id' => int 6      'name' => string 'madana' (length=6)      'weight' => int 95      'height' => int 110  4 =>    array (size=4)      'id' => int 1      'name' => string 'fj' (length=2)      'weight' => int 100      'height' => int 180  5 =>    array (size=4)      'id' => int 4      'name' => string 'bill' (length=4)      'weight' => int 110      'height' => int 190  6 =>    array (size=4)      'id' => int 3      'name' => string 'jerry' (length=5)      'weight' => int 120      'height' => int 156

這裡的重點就是,先把要排序的key存到一個一維數組中,然後就可以使用array_multisort()這個函數,將數組按照key進行排序了,當然,這裡的排序你完全可以不適用array_multisort()這個函數,僅僅通過foreach遍曆也能達到這個效果,但是既然php開發人員給我們提供了更好的辦法,我們就可以省去不必要的麻煩了。

轉自:https://www.cnblogs.com/tdalcn/p/6420055.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.