国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php專用數組排序類ArraySortUtil用法實例

2024-05-04 23:33:52
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了php專用數組排序類ArraySortUtil用法,實例分析了ArraySortUtil實現數組排序的方法與對應使用技巧,需要的朋友可以參考下

本文實例講述了php專用數組排序類ArraySortUtil用法。分享給大家供大家參考。具體如下:

 

 
  1. ** 
  2. * ArraySortUtil is a array sort utility, you can extends the sorting engine. 
  3. * @version 0.1 
  4. * @package utility.sort 
  5. */ 
  6. class ArraySortUtil 
  7. static function uasort($unsort$fields
  8. if ( !is_array($unsort) || sizeof($unsort) <= 0 ) return $unsort
  9. $sorted = uasortEngine::uasort($unsort$fields); 
  10. return $sorted
  11. static function multisort($unsort$fields
  12. if ( !is_array($unsort) || sizeof($unsort) <= 0 ) return $unsort
  13. $sorted = multisortEngine::multisort($unsort$fields); 
  14. return $sorted
  15. class multisortEngine 
  16. static function multisort($unsort$fields
  17. $sorted = $unsort
  18. if (is_array($unsort)) 
  19. $loadFields = array(); 
  20. foreach($fields as $sortfield
  21. $loadFields["field"][] = array
  22. "name" => $sortfield["field"], 
  23. "order" => $sortfield["order"], 
  24. "nature" => $sortfield["nature"], 
  25. "caseSensitve" => $sortfield["caseSensitve"
  26. ); 
  27. $loadFields["data"][$field["field"]] = array(); 
  28. // Obtain a list of columns 
  29. foreach ($sorted as $key => $row) { 
  30. foreach($loadFields["field"as $field) { 
  31. $value = $row[$field["name"]]; 
  32. $loadFields["data"][$field["name"]][$key] = $value
  33. $parameters = array(); 
  34. foreach($loadFields["field"as $sortfield) { 
  35. $array_data = $loadFields["data"][$sortfield["name"]]; 
  36. $caseSensitve = ( $sortfield["caseSensitve"] == null ) ? $sortfield["caseSensitve"] : false; 
  37. if (!$caseSensitve$array_data = array_map('strtolower'$array_data); 
  38. $parameters[] = $array_data
  39. if ( $sortfield["order"] != null ) $parameters[] = ( $sortfield["order"] ) ? SORT_DESC : SORT_ASC; 
  40. if ( $sortfield["nature"] != null ) $parameters[] = ( $sortfield["nature"] ) ? SORT_REGULAR : SORT_STRING; 
  41. $parameters[] = &$sorted
  42. call_user_func_array("array_multisort"$parameters); 
  43. return $sorted
  44. class uasortEngine 
  45. static private $caseSensitve = false; 
  46. static private $sortfields = array(); 
  47. static private $sortorder = true; 
  48. static private $nature = false; 
  49. static private function uasort_callback(&$a, &$b
  50. foreach(self::$sortfields as $sortfield
  51. $_field = $sortfield["field"]; 
  52. $_order = isset($sortfield["order"]) ? $sortfield["order"] : self::$sortorder
  53. $_caseSensitve = isset($sortfield["caseSensitve"]) ? $sortfield["caseSensitve"] : self::$caseSensitve
  54. $_nature = isset($sortfield["nature"]) ? $sortfield["nature"] : self::$nature
  55. if ($_field != ""
  56. $retval = 0; 
  57. if ($_nature
  58. if ($_caseSensitve
  59. $compare = strnatcmp($a[$_field], $b[$_field]); 
  60. else 
  61. $compare = strnatcasecmp($a[$_field], $b[$_field]); 
  62. else 
  63. if ($_caseSensitve
  64. $compare = strcmp($a[$_field], $b[$_field]); 
  65. else 
  66. $compare = strcasecmp($a[$_field], $b[$_field]); 
  67. if ($compare !== 0 && !$_order$compare = ($compare > 0) ? -1 : 1; 
  68. if ($compare !== 0) break
  69. return $compare
  70. static function uasort($unsort$fields
  71. self::$sortfields = $fields
  72. $sorted = $unsort
  73. uasort($sortedarray('uasortEngine''uasort_callback')); 
  74. return $sorted

使用范例如下:

 

 
  1. <?php 
  2. require_once('class.ArraySortUtil.php'); 
  3. // declare test data 
  4. $assetData[] = array("id" => 1, "category"=>"Hardware""subcategory"=>"Personal Computer""supplier" => "DELL""particular"=>"Vostro 1320""purchase_price"=>2300, "other_charges"=>500); 
  5. $assetData[] = array("id" => 2, "category"=>"Hardware""subcategory"=>"Personal Computer""supplier" => "DELL""particular"=>"Vostro 1420""purchase_price"=>2500, "other_charges"=>0); 
  6. $assetData[] = array("id" => 3, "category"=>"Hardware""subcategory"=>"Laptop""supplier" => "DELL""particular"=>"Vostro 1520""purchase_price"=>4500, "other_charges"=>100); 
  7. $assetData[] = array("id" => 4, "category"=>"Hardware""subcategory"=>"Laptop""supplier" => "Acer""particular"=>"Apire One""purchase_price"=>2500, "other_charges"=>200); 
  8. $assetData[] = array("id" => 5, "category"=>"Furniture""subcategory"=>"Table""supplier" => "CHEN""particular"=>"Manager Table""purchase_price"=>1000, "other_charges"=>0); 
  9. $assetData[] = array("id" => 6, "category"=>"Furniture""subcategory"=>"Table""supplier" => "CHEN""particular"=>"Staff Table""purchase_price"=>500, "other_charges"=>0); 
  10. $assetData[] = array("id" => 7, "category"=>"Furniture""subcategory"=>"Chair""supplier" => "CHEN""particular"=>"Staff Chair""purchase_price"=>500, "other_charges"=>0); 
  11. $sorted = ArraySortUtil::multisort($assetDataarray
  12. array("field"=>"category"), 
  13. array("field"=>"subcategory""order" => true) // desc 
  14. )); 
  15. echo "<h1>multisort:result</h1>"
  16. echo "<pre>"
  17. print_r($sorted); 
  18. echo "</pre>"
  19. $sorted = ArraySortUtil::uasort($assetDataarray
  20. array("field"=>"category"), 
  21. array("field"=>"subcategory""order" => true) // desc 
  22. )); 
  23. echo "<h1>uasort:result</h1>"
  24. echo "<pre>"
  25. print_r($sorted); 
  26. echo "</pre>"

希望本文所述對大家的php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴义市| 三亚市| 池州市| 黄骅市| 大城县| 大新县| 邓州市| 乌什县| 金秀| 定南县| 康平县| 扶绥县| 泰兴市| 兴化市| 台北县| 蒙城县| 宁陕县| 文成县| 紫云| 台州市| 安龙县| 曲水县| 朝阳县| 绥芬河市| 九寨沟县| 托克托县| 新绛县| 蒙山县| 江西省| 凌源市| 西藏| 蓝田县| 汝城县| 沐川县| 东海县| 洛南县| 册亨县| 阳原县| 大丰市| 浦东新区| 丰镇市|