微信扫一扫打赏支持

thinkphp5中如何使用 usort

thinkphp5中如何使用 usort

一、总结

一句话总结:其实比较函数加上命名空间就好啦,不然找不到

比较函数加命名空间 数组做usort的第二个参数
usort($question_list, array('\app\index\model\blog\choose_question\base\UsortQuestionList',"cmp_sequence_score"));

 

1、php中usort的比较函数怎么写?

和c++中的比较函数的写法差不多

 

 

 

二、关于自定义比较函数 usort 如何使用 类中的方法(转)

转自:关于自定义比较函数 usort 如何使用 类中的方法 - qdujunjie的专栏 - CSDN博客
https://blog.csdn.net/qdujunjie/article/details/42081137

 

关于自定义比较函数 usort() ,如果直接使用函数,是

 

usort($arr, "yourfunction");

 

 

如果要使用类中的自定义方法,则用以下方式:

 

 

 

<?php

/**
 * SortTest
 *
 * @author andy
 */
class SortTest extends CommonAction {

    protected function my_sort($a, $b){
        if ($a == $b) return 0;
            return ($a > $b) ? 1 : -1;
    }

    public function index(){


        $arr = array(
            'products'=>array(
            array('product_id'=>'123'),
            array('product_id'=>'abc'),
            array('product_id'=>'321'),
            array('product_id'=>'111'),
            )
        );

        usort($arr['products'],array('SortTest','my_sort'));
    }

}


结果为:

 

 

Array
(
    [products] => Array
        (
            [0] => Array
                (
                    [product_id] => 111
                )

            [1] => Array
                (
                    [product_id] => 123
                )

            [2] => Array
                (
                    [product_id] => 321
                )

            [3] => Array
                (
                    [product_id] => abc
                )

        )

)

 

三、thinkphp中使用usort排序实例

其实加上命名空间就好啦

usort($question_list, array('\app\index\model\blog\choose_question\base\UsortQuestionList',"cmp_sequence_score"));
 1 <?php
 2 namespace app\index\model\blog\choose_question\base;
 3 use app\index\model\Base;
 4 
 5 //用usort函数给题目列表排序
 6 class UsortQuestionList extends Base
 7 {
 8 
 9 
10     /*************************************************一、主函数区*************************************************/
11     //1:按题目的日期时间戳和题目所在博客的位置给题目列表排序,并且增加 顺序因子(分数) sequence_score
12 
13     public static function add_sequence_score($question_list){
14         usort($question_list, array('\app\index\model\blog\choose_question\base\UsortQuestionList',"cmp_sequence_score"));
15         return $question_list;
16     }
17 
18 
19 
20 
21     /*************************************************二、工具函数区*************************************************/
22     public static function cmp_sequence_score($a, $b)
23     {
24         if ($a['b_day_ts'] == $b['b_day_ts']) {
25             return ($a['bq_blog_question_num'] < $b['bq_blog_question_num']) ? -1 : 1;
26         }
27         return ($a['b_day_ts'] < $b['b_day_ts']) ? -1 : 1;
28     }
29 
30 }

目录结构如何:

 

 

 

 

 

 
posted @ 2019-04-14 20:28  范仁义  阅读(681)  评论(0编辑  收藏  举报