PHP自定义数组排序

落日映苍穹つ 2022-08-06 01:05 347阅读 0赞
  1. /*
  2. * 二维数组自定义排序函数
  3. * uasort($arr,function_name)
  4. *
  5. **/
  6. $arr = array(
  7. array('a'=>1,'b'=>'c'),
  8. array('a'=>4,'b'=>'a'),
  9. array('a'=>5,'b'=>'g'),
  10. array('a'=>7,'b'=>'f'),
  11. array('a'=>6,'b'=>'e')
  12. );
  13. function compare_arr($x,$y){
  14. if($x['b']<$y['b']){
  15. return -1;
  16. }else if($x['b']>$y['b']){
  17. return 1;
  18. }else{
  19. return 0;
  20. }
  21. }
  22. uasort($arr,'compare_arr');
  23. foreach($arr as $a){
  24. echo $a['a'].'=>'.$a['b'].'<br/>';
  25. }

手册里的自定义排序类:

  1. class multiSort
  2. {
  3. var $key; //key in your array
  4. //排序函数 参数依次是 数组 待排列索引 排序类型
  5. function run ($myarray, $key_to_sort, $type_of_sort = '')
  6. {
  7. $this->key = $key_to_sort;
  8. if ($type_of_sort == 'desc')
  9. uasort($myarray, array($this, 'myreverse_compare'));
  10. else
  11. uasort($myarray, array($this, 'mycompare'));
  12. return $myarray;
  13. }
  14. //正序
  15. function mycompare($x, $y)
  16. {
  17. if ( $x[$this->key] == $y[$this->key] )
  18. return 0;
  19. else if ( $x[$this->key] < $y[$this->key] )
  20. return -1;
  21. else
  22. return 1;
  23. }
  24. //逆序
  25. function myreverse_compare($x, $y)
  26. {
  27. if ( $x[$this->key] == $y[$this->key] )
  28. return 0;
  29. else if ( $x[$this->key] > $y[$this->key] )
  30. return -1;
  31. else
  32. return 1;
  33. }
  34. }

发表评论

表情:
评论列表 (有 0 条评论,347人围观)

还没有评论,来说两句吧...

相关阅读

    相关 php 数组排序

    今天项目里遇到需要按照分数来排序,因该字段未入库,转化过来就是需要根据数组的某个字段的值排序 这里先介绍两个函数 1.array\_column(数组,返回值得键名);