php专区

 首页 > php专区 > PHP应用 > 常用功能 > 简单php二维数组多元素排序实例

简单php二维数组多元素排序实例

分享到:
【字体:
导读:
          php二维数组多元素排序小编介绍过很多了,只是今年看到这个例子有一点区别了所以小编为各位整理了一下,希望这个排序算法能够帮助到各位. 写个二维数组的多元素排序,多元素排序类...

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. reset($keysvalue); 
  44. $count_s = 0; 
  45. //恢复键值 
  46. foreach ($keysvalue as $k=>$v){ 
  47. $new_array[$count_s] = $arr[$k]; 
  48. $count_s++; 
  49. }  //phpfensi.com 
  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);

 

分享到:
PHP版微信红包API接口程序
对于微信红包我相信今年过年时各位朋友都有知道吧,这个微信红包相当的火爆了,下面我们来给各位介绍一个PHP版微信红包API接口程序了,我们可以基于这个接口也实现开发第三方红包功能. 根据微信高级红包接口,开发PHP版本的API接口,现在进行主要代码分析,红包接口调用请求代码,所有请求参数为必填参数与文档对应: ...
linux环境下php读取csv文件中文读取不到...
今天遇到在Linux系统下用php读取带中文的csv文件时,中文不显示了,感觉中文被歧视一样,后来找到原来要加上中文语言标识,在LIUNX环境下PHP读取csv文件的时候,csv文件中的中文不显示.... 终于找到了解决方案,下面和大家分享下,在执行csv文件读取前加上一句: setlocale(LC_ALL, 'zh_CN'); 瞬间,问题解决...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……