thinkphp5中如何使用 usort
1、总结
一句话总结:其实比较函数加上命名空间就好啦,否则找不到
比较函数加命名空间 数组作usort的第二个参数
usort($question_list, array('\app\index\model\blog\choose_question\base\UsortQuestionList',"cmp_sequence_score"));
一、php中usort的比较函数怎么写?
和c++中的比较函数的写法差很少
2、关于自定义比较函数 usort 如何使用 类中的方法(转)
转自:关于自定义比较函数 usort 如何使用 类中的方法 - qdujunjie的专栏 - CSDN博客
https://blog.csdn.net/qdujunjie/article/details/42081137php
关于自定义比较函数 usort() ,若是直接使用函数,是html
usort($arr, "yourfunction");c++
若是要使用类中的自定义方法,则用如下方式:thinkphp
<?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 ) ) )
3、thinkphp中使用usort排序实例
其实加上命名空间就好啦app
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 /*************************************************1、主函数区*************************************************/ 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 /*************************************************2、工具函数区*************************************************/ 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 }
目录结构如何:函数