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 }
目錄結構如何:函數