当前位置:首页 > PHP教程 > php数组 > 列表

php二维数组多元素排序例子

发布:smiling 来源: PHP粉丝网  添加日期:2016-01-01 15:08:10 浏览: 评论:0 

二维数组排序的问题小编介绍过许多的方法了,这里看到一网友写的一款性能不错的php二维数组多元素排序例子,我们来看看。

写个二维数组的多元素排序,多元素排序类似sql中的order by sort,date,下面代码考虑性能问题,只涉及2个元素进行排序。

代码区:

  1. function multipleArraySort($old_arr,$arr1,$arr2){ 
  2. //排序第一个元素 
  3. $old_arr = array_sort($old_arr,$arr1[0],$arr1[1]); 
  4. $temp_array = $new_temp_array = array(); 
  5. foreach($old_arr as $k => $v){ 
  6. $key_count = count($old_arr)-1; 
  7. //第一个元素数相等,放入临时数组 
  8. if($v[$arr1[0]] == $old_arr[$k-1][$arr1[0]] || emptyempty($temp_array)){ 
  9. $temp_array[$k] = $v;  
  10. if(($v[$arr1[0]] != $old_arr[$k-1][$arr1[0]] && !emptyempty($temp_array)) || $key_count == $k){ 
  11. //添加最新元素 
  12. $temp_array[$k] = $v;  
  13. //数组大于1时,进行排序处理 
  14. if(count($temp_array)>1){ 
  15. if($key_count != $k){ 
  16. //删除最后一个(与上一个不相等元素) 
  17. unset($temp_array[$k]); 
  18. //不是最后或者最后相同,进行排序 
  19. if($key_count != $k || $v[$arr1[0]] == $old_arr[$k-1][$arr1[0]]){ 
  20. //排序第二个元素 
  21. $temp_array = array_sort($temp_array,$arr2[0],$arr2[1]); 
  22. //排序后把排序的数组,插入原数组排序前位置 
  23. $count = count($new_temp_array)==0 ? 0 : count($new_temp_array); 
  24. foreach($temp_array as $val_t){ 
  25. $new_temp_array[$count] = $val_t
  26. $count++; 
  27. //写入新数组后清空原数组 
  28. $temp_array = array(); 
  29. //添加最新元素 
  30. $temp_array[$k] = $v;  
  31. return $new_temp_array
  32. //根据数组元素排序 
  33. function array_sort($arr,$keys,$type='asc'){  
  34. $keysvalue = $new_array = array(); 
  35. //获取元素值,生成新数组 
  36. foreach ($arr as $k=>$v){ 
  37. $keysvalue[$k] = $v[$keys]; 
  38. //排序,默认为正序 
  39. if($type == 'asc'){ 
  40. asort($keysvalue); 
  41. }else
  42. arsort($keysvalue); 
  43. //phpfensi.com 
  44. reset($keysvalue); 
  45. $count_s = 0; 
  46. //恢复键值 
  47. foreach ($keysvalue as $k=>$v){ 
  48. $new_array[$count_s] = $arr[$k]; 
  49. $count_s++; 
  50. return $new_array;  

调用方法:

  1. $old_arr = array
  2. array('id'=>1,'sort'=>1,'date'=>'1405648791'), 
  3. array('id'=>2,'sort'=>1,'date'=>'1405649791'), 
  4. array('id'=>3,'sort'=>2,'date'=>'1405647791'), 
  5. ); 
  6. $arr1 = array('sort','desc'); 
  7. $arr2 = array('date','desc'); 
  8. $newArr = multipleArraySort($old_arr,$arr1,$arr2); 
  9. var_dump($newArr);

Tags: php二维数组 php多元素

分享到: