上一篇文章有写过php多维数组排序,那个程序只只支持二维数组,今天分享的是支持多位数组的,不管几位数组都支持的。

  1. <?php
  2.  
  3. $array=array(
  4. array(
  5. "one"=>array(
  6. "two"=>array(
  7. "three"=>3,
  8. "num"=>array(
  9. 'num'=>1
  10. )
  11. ),
  12. "num"=>12,
  13. ),
  14.  
  15. )
  16. ,
  17. array(
  18. "one"=>array(
  19. "two"=>array(
  20. "three"=>2,
  21. "num"=>array(
  22. 'num'=>2
  23. )
  24. ),
  25. "num"=>11,
  26. ),
  27.  
  28. )
  29. ,
  30. array(
  31. "one"=>array(
  32. "two"=>array(
  33. "three"=>1,
  34. "num"=>array(
  35. 'num'=>1
  36. )
  37. ),
  38. "num"=>13,
  39. ),
  40.  
  41. )
  42. );
  43.  
  44.  
  45. $arr=my_array_multisort($array,'num');
  46. print_r($arr);
  47.  
  48. function my_array_multisort($data,$sort_order_field,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC){
  49. foreach($data as $key=> $val){
  50. if( $val && count($val) && is_array($val)){
  51. $sort_array= sort_order_field($val,$sort_order_field);
  52. }
  53. $key_arrays[]=$sort_array[$sort_order_field];
  54. }
  55. array_multisort($key_arrays,$sort_order,$sort_type,$data);
  56. return $data;
  57. }
  58. function sort_order_field($data,$sort_order_field){
  59. if($data && count($data) && is_array($data)){
  60. foreach ($data as $key => $value) {
  61. if($sort_order_field==$key && !is_array($value)){
  62.  
  63. return $data;
  64. }
  65. if($value && count($value) && is_array($value)){
  66. $temp_data= sort_order_field($value,$sort_order_field);
  67. if(!empty($temp_data[$sort_order_field] && !is_array($temp_data[$sort_order_field]))){
  68. return $temp_data;
  69. }
  70.  
  71. }
  72. }
  73. }
  74.  
  75. return $data;
  76. }
  77. ?>
相关评论(0)
您是不是忘了说点什么?

友情提示:垃圾评论一律封号...

还没有评论,快来抢沙发吧!