www.adminn.cn
站长正能量分享网!

php对多维数组的某个键值排序方法

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠

php多维数组排序可以用array_multisort() 函数来处理,array_multisort() 函数可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序,关联(string)键名保持不变,但数字键名会被重新索引.

排序顺序标志:

SORT_ASC – 按照上升顺序排序

SORT_DESC – 按照下降顺序排序

排序类型标志:

SORT_REGULAR – 将项目按照通常方法比较

SORT_NUMERIC – 将项目按照数值比较

SORT_STRING – 将项目按照字符串比较

例子1.对多个数组排序,代码如下:

  1. <?php 
  2. $ar1 = array("10", 100, 100, "a"); 
  3. $ar2 = array(1, 3, "2", 1); 
  4. array_multisort($ar1$ar2); 
  5. var_dump($ar1); 
  6. var_dump($ar2); 
  7. ?> 

本例中经过排序后,第一个数组将包含 "10","a",100,100,第二个数组将包含 1,1,"2",3,第二个数组中的项目顺序完全和第一个数组中相应的项目(100 和 100)顺序一致.

但是这些都不可以指定由那个键值进行排名了,下面我就整理了几个函数算法都不错.

示例代码如下:

  1. /** 
  2.  * 对多位数组进行排序 
  3.  * @param $multi_array 数组 
  4.  * @param $sort_key需要传入的键名 
  5.  * @param $sort排序类型 
  6.  */ 
  7. function multi_array_sort($multi_array$sort_key$sort = SORT_DESC) { 
  8. if (is_array($multi_array)) { 
  9. foreach ($multi_array as $row_array) { 
  10. if (is_array($row_array)) { 
  11. $key_array[] = $row_array[$sort_key]; 
  12. else { 
  13. return FALSE; 
  14. else { 
  15. return FALSE; 
  16. array_multisort($key_array$sort$multi_array); 
  17. return $multi_array

例子二,代码如下:

  1. function array_sort($arr$keys$type = 'asc') { 
  2. $keysvalue = $new_array = array(); 
  3. foreach ($arr as $k => $v) { 
  4. $keysvalue[$k] = $v[$keys]; 
  5. }//开源软件:phpfensi.com 
  6. if ($type == 'asc') { 
  7. asort($keysvalue); 
  8. else { 
  9. arsort($keysvalue); 
  10. reset($keysvalue); 
  11. foreach ($keysvalue as $k => $v) { 
  12. $new_array[] = $arr[$k]; 
  13. return $new_array

例子3,代码如下:

  1. /* 
  2. function:二维数组按指定的键值排序 
  3. author:www.phpfensi.com 
  4. */ 
  5. function array_sort($array,$keys,$type='asc'){ 
  6. if(!isset($array) || !is_array($array) || emptyempty($array)){ 
  7. return ''
  8. if(!isset($keys) || trim($keys)==''){ 
  9. return ''
  10. if(!isset($type) || $type=='' || !in_array(strtolower($type),array('asc','desc'))){ 
  11. return ''
  12. $keysvalue=array(); 
  13. foreach($array as $key=>$val){ 
  14. $val[$keys] = str_replace('-','',$val[$keys]); 
  15. $val[$keys] = str_replace(' ','',$val[$keys]); 
  16. $val[$keys] = str_replace(':','',$val[$keys]); 
  17. $keysvalue[] =$val[$keys]; 
  18. asort($keysvalue); //key值排序 
  19. reset($keysvalue); //指针重新指向数组第一个 
  20. foreach($keysvalue as $key=>$vals) { 
  21. $keysort[] = $key
  22. $keysvalue = array(); 
  23. $count=count($keysort); 
  24. if(strtolower($type) != 'asc'){ 
  25. for($i=$count-1; $i>=0; $i–) { 
  26. $keysvalue[] = $array[$keysort[$i]]; 
  27. }else
  28. for($i=0; $i<$count$i++){ 
  29. $keysvalue[] = $array[$keysort[$i]]; 
  30. return $keysvalue

例如有下列这样一个数组,代码如下:

  1. $array=array
  2. 0=>array('id'=>8,'username'=>'phpernote'), 
  3. 1=>array('id'=>9,'username'=>'com'), 
  4. 2=>array('id'=>5,'username'=>'www'
  5. ); 

现在需要将这个二维数组按id升序排列,则:array_sort($array,'id','asc');

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《php对多维数组的某个键值排序方法》
文章链接:https://www.adminn.cn/news/6948.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

Adminn.Cn 站长分享圈

帝国CMS精品模板腾讯云优惠券,代金券

本站源码仅供本地环境下学习借鉴研究使用!

源码请勿用于任何涉灰站点!净化网络,站长更有责!

支付宝扫一扫打赏