加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php array_multisort() 多组数组排序方法

发布时间:2020-12-13 20:32:55 所属栏目:PHP教程 来源:网络整理
导读:在php中array_multisort()可实现一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序,如果成功则返回 TRUE,失败则返回 FALSE. bool array_multisort ( array ar1 [,mixed arg [,mixed ... [,array ...]]] ) 如果成功则返回 TRUE,失败则返回 FALS

在php中array_multisort()可实现一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序,如果成功则返回 TRUE,失败则返回 FALSE.

bool array_multisort ( array ar1 [,mixed arg [,mixed ... [,array ...]]] )

如果成功则返回 TRUE,失败则返回 FALSE.

array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序.

关联(string)键名保持不变,但数字键名会被重新索引.

例子 1. 对多维数组排序实例代码如下:

  1. <?php 
  2. $ar = array
  3.        array("10", 11, 100, "a"), 
  4.        array(   1,  2, "2",   3,   1) 
  5.       ); 
  6. array_multisort($ar[0], SORT_ASC, SORT_STRING, 
  7.                 $ar[1], SORT_NUMERIC, SORT_DESC); 
  8. var_dump($ar); 
  9. ?> 

In this example,after sorting,the first array will transform to "10",100,11,"a" (it was sorted as strings in ascending order). The second will contain 1,3,"2",2,1 (sorted as numbers,in descending order).

实例代码如下:

  1. array(2) { 
  2.   [0]=> array(5) { 
  3.     [0]=> string(2) "10" 
  4.     [1]=> int(100) 
  5.     [2]=> int(100) 
  6.     [3]=> int(11) 
  7.     [4]=> string(1) "a" 
  8.   } 
  9.   [1]=> array(5) { 
  10.     [0]=> int(1) 
  11.     [1]=> int(3) 
  12.     [2]=> string(1) "2" 
  13.     [3]=> int(2) 
  14.     [4]=> int(1) 
  15.   } 

本例中经过排序后,第一个数组将包含 10,"a"(作为字符串上升排序),第二个数组将包含 1,1(作为数值下降排序).

例子 2. Sorting multi-dimensional array实例代码如下:

  1. <?php 
  2. $ar = array
  3.         array("10"
  4.         array(   1,   1) 
  5.        ); 
  6. array_multisort($ar[0], SORT_DESC); 
  7. var_dump($ar); 
  8. ?>  

本例中在排序后,第一个数组将变成 "10","a"(被当作字符串以升序排列).第二个数组将包含 1,1(被当作数字以降序排列).

实例代码如下:

  1. array(2) { 
  2.   [0]=> array(5) { 
  3.     [0]=> string(2) "10" 
  4.     [1]=> int(100) 
  5.     [2]=> int(100) 
  6.     [3]=> int(11) 
  7.     [4]=> string(1) "a" 
  8.   } 
  9.   [1]=> array(5) { 
  10.     [0]=> int(1) 
  11.     [1]=> int(3) 
  12.     [2]=> string(1) "2" 
  13.     [3]=> int(2) 
  14.     [4]=> int(1) 
  15.   } 

实例3 综合实现来看一个关于在应用中常用的实例代码如下:

  1. header('Content-Type: text/html; charset=utf-8');  
  2. echo '<pre>';  
  3. //原始数组格式  
  4. $array = array(  
  5. 'key1' => array(  
  6. 'item1' => '65',  
  7. 'item2' => '35',  
  8. 'item3' => '84',  
  9. ),  
  10. 'key2' => array(  
  11. 'item1' => '24',  
  12. ),  
  13. 'key3' => array(  
  14. 'item1' => '38',  
  15. 'item3' => '45',  
  16. );  
  17. //要排序的键  
  18. //按照数组中的 item1进行排序  
  19. //你也可以换成item2  
  20. $sort = 'item1';  
  21. foreach($array as $k => $v)  
  22. {  
  23. $newArr[$k] = $v[$sort];  
  24. }  
  25. //这个函数如果执行正确他会直接改变原数组键值的顺序  
  26. //如果执行失败,那么他会返回 bool(false)  
  27. array_multisort($newArr,SORT_DESC, $array);  
  28. var_dump($array);  
  29. //---------------------排序后的数组打印效果 开始--------------------  
  30. array(3) {  
  31. ["key1"]=>  
  32. array(3) {  
  33. ["item1"]=>  
  34. string(2) "65"  
  35. ["item2"]=>  
  36. string(2) "35"  
  37. ["item3"]=>  
  38. string(2) "84"  
  39. }  
  40. ["key3"]=>  
  41. array(2) {  
  42. ["item1"]=>  
  43. string(2) "38"  
  44. ["item3"]=>  
  45. string(2) "45"  
  46. }  
  47. ["key2"]=>  
  48. array(1) {  
  49. ["item1"]=>  
  50. string(2) "24"  
  51. }  
  52. }  
  53. //---------------------排序后的数组打印效果 结束--------------------- 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读