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"));
 <?php
namespace app\index\model\blog\choose_question\base;
use app\index\model\Base; //用usort函数给题目列表排序
class UsortQuestionList extends Base
{ /*************************************************一、主函数区*************************************************/
//1:按题目的日期时间戳和题目所在博客的位置给题目列表排序,并且增加 顺序因子(分数) sequence_score public static function add_sequence_score($question_list){
usort($question_list, array('\app\index\model\blog\choose_question\base\UsortQuestionList',"cmp_sequence_score"));
return $question_list;
} /*************************************************二、工具函数区*************************************************/
public static function cmp_sequence_score($a, $b)
{
if ($a['b_day_ts'] == $b['b_day_ts']) {
return ($a['bq_blog_question_num'] < $b['bq_blog_question_num']) ? -1 : 1;
}
return ($a['b_day_ts'] < $b['b_day_ts']) ? -1 : 1;
} }

目录结构如何:

 

thinkphp5中如何使用 usort的更多相关文章

  1. thinkphp5中使用phpmailer实现发送邮件功能(转载)

    一.开启SMTP服务(使用php发送邮件需要用到SMTP服务,这里以163邮箱的SMTP服务为例). 1.登录163邮箱,在首页上找到“设置”. 2.选择开启的服务,一般都全选,POP3/SMTP/I ...

  2. thinkphp5中使用PHPExcel(转载)

    thinkphp5中可以使用composer来获取第三方类库,使用起来特别方便,例如:可是使用composer下载PHPMailer,think-captcha(验证码)等等…… 接下来说一下怎么使用 ...

  3. thinkphp5中的配置如何使用

    thinkphp5中的配置如何使用 一.总结 一句话总结:先加载配置,然后读取配置即可 加载配置 读取配置 Config::load(APP_PATH.'fry_config.php');\\加载配置 ...

  4. thinkphp5中的一些关于命名空间的tisp

    1.thinkphp5中公共函数文件common中,不需要use,也可以直接使用vendor中的类文件. 2.在类前面的反斜杠作用是,直接使用最外层的命名空间,有时不想use某个X类,却想使用X类时, ...

  5. ThinkPHP5中find()和select()区别

    ThinkPHP5中find()和select()区别 读取数据是指读取数据表中的一行数据(或者关联数据),主要通过find方法完成,例如: 1 2 3 4 $User = M("User& ...

  6. ThinkPHP5中如何实现模板完全静态化

    模板完全静态化,也就是通过模板完全生成纯静态的网页,相比动态页面和伪静态页面更安全更利于SEO访问更快.相比前二者各有利弊吧,现在稍微对这三种形式的优缺点对比一下,以及在ThinkPHP5项目中实现完 ...

  7. ThinkPHP5中模型关联关系一对一,一对多

    TP5 返回json反斜杠前面转义了class XinDai extends Controller{ public function index(){ $res = [ ['logo'=>'/i ...

  8. thinkphp5中使用phpmailer实现发送邮件功能

    一.开启SMTP服务(使用php发送邮件需要用到SMTP服务,这里以163邮箱的SMTP服务为例). 1.登录163邮箱,在首页上找到“设置”. 2.选择开启的服务,一般都全选,POP3/SMTP/I ...

  9. ThinkPHP5中Session的使用

    由于用惯了ThinkPHP之前的版本,一想到要用Session就直接用$_SESSION来存取,今天看了ThinkPHP5的手册,才发现原来这么用时不安全滴.ThinKPHP5对Session进行了封 ...

随机推荐

  1. Android之socket客户端

    接收数据不要用readline(),用read() Socket mSocket = new Socket("192.168.1.100", 8888); DataInputStr ...

  2. 对于ListView的一些用法(一)

    ScrollView:只能用于控件比较少的界面,如果数据有上千上万条,那么使用ScrollView就不好了,因为ScrollView就把所有的控件进行初始化,这是非常消耗性能的操作,所以android ...

  3. 【python014--字符串内置函数】

    一.实现跨越多行的字符串 1.采用双引号实现 str1 = ""待我长发及腰,将军归来可好?此身君子意逍遥,怎料山河萧萧天光乍破遇,暮雪白头老寒剑默听奔雷,长枪独守空豪醉卧沙场君莫 ...

  4. Flask学习【第10篇】:自定义Form组件

    wtforms源码流程 实例化流程分析 1 # 源码流程 2 1. 执行type的 __call__ 方法,读取字段到静态字段 cls._unbound_fields 中: meta类读取到cls._ ...

  5. Android Java层,Native层,Lib层打印Log简介【转】

    本文转载自:https://blog.csdn.net/AndroidMage/article/details/52225068 说明: 这里我根据个人工作情况说明在各个层打印log.如有问题欢迎拍砖 ...

  6. P3128 [USACO15DEC]最大流Max Flow

    思路 这个题哪里有那么费脑筋 我们可以树链剖分嘛LCT昨天学的时候睡着了,不是太会 两遍dfs+一个5行的BIT 其实树链剖分学好了对倍增和LCT理解上都有好处 一条路径上的修改 由于一条剖出来的链是 ...

  7. LIS|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)

    #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 9; int f[N], a[N]; int n; // ...

  8. svn强制commit写log

    https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-howto-minlogmsgsize.html Force users to ent ...

  9. git删除远程分支文件,不改变本地文件

    git提交项目时候踩的Git的坑 特别 由于准备春招,所以希望各位看客方便的话,能去github上面帮我Star一下项目 https://github.com/Draymonders/Campus-S ...

  10. computed 计算选项

    computed 的作用主要是对原数据进行改造输出.改造输出:包括格式的编辑,大小写转换,顺序重排,添加符号……. 格式化输出结果 我们先来做个读出价格的例子:我们读书的原始数据是price:100 ...