首页 > 编程 > PHP > 正文

php专用数组排序类ArraySortUtil用法实例

2020-03-22 20:30:43
字体:
来源:转载
供稿:网友
本文实例讲述了php专用数组排序类ArraySortUtil用法。分享给大家供大家参考。具体如下: * ArraySortUtil is a array sort utility, you can extends the sorting engine. * @version 0.1 * @package utility.sorthtml' target='_blank'>class ArraySortUtil static function uasort($unsort, $fields) if ( !is_array($unsort) || sizeof($unsort) = 0 ) return $unsort; $sorted = uasortEngine::uasort($unsort, $fields); return $sorted; static function multisort($unsort, $fields) if ( !is_array($unsort) || sizeof($unsort) = 0 ) return $unsort; $sorted = multisortEngine::multisort($unsort, $fields); return $sorted;class multisortEngine static function multisort($unsort, $fields) $sorted = $unsort; if (is_array($unsort)) $loadFields = array(); foreach($fields as $sortfield) $loadFields["field"][] = array( "name" = $sortfield["field"], "order" = $sortfield["order"], "nature" = $sortfield["nature"], "caseSensitve" = $sortfield["caseSensitve"] $loadFields["data"][$field["field"]] = array(); // Obtain a list of columns foreach ($sorted as $key = $row) { foreach($loadFields["field"] as $field) { $value = $row[$field["name"]]; $loadFields["data"][$field["name"]][$key] = $value; $parameters = array(); foreach($loadFields["field"] as $sortfield) { $array_data = $loadFields["data"][$sortfield["name"]]; $caseSensitve = ( $sortfield["caseSensitve"] == null ) $sortfield["caseSensitve"] : false; if (!$caseSensitve) $array_data = array_map('strtolower', $array_data); $parameters[] = $array_data; if ( $sortfield["order"] != null ) $parameters[] = ( $sortfield["order"] ) SORT_DESC : SORT_ASC; if ( $sortfield["nature"] != null ) $parameters[] = ( $sortfield["nature"] ) SORT_REGULAR : SORT_STRING; $parameters[] = &$sorted; call_user_func_array("array_multisort", $parameters); return $sorted;class uasortEngine static private $caseSensitve = false; static private $sortfields = array(); static private $sortorder = true; static private $nature = false; static private function uasort_callback(&$a, &$b) foreach(self::$sortfields as $sortfield) $_field = $sortfield["field"]; $_order = isset($sortfield["order"]) $sortfield["order"] : self::$sortorder; $_caseSensitve = isset($sortfield["caseSensitve"]) $sortfield["caseSensitve"] : self::$caseSensitve; $_nature = isset($sortfield["nature"]) $sortfield["nature"] : self::$nature; if ($_field != "") $retval = 0; if ($_nature) if ($_caseSensitve) $compare = strnatcmp($a[$_field], $b[$_field]); else $compare = strnatcasecmp($a[$_field], $b[$_field]); else if ($_caseSensitve) $compare = strcmp($a[$_field], $b[$_field]); else $compare = strcasecmp($a[$_field], $b[$_field]); if ($compare !== 0 && !$_order) $compare = ($compare 0) -1 : 1; if ($compare !== 0) break; return $compare; static function uasort($unsort, $fields) self::$sortfields = $fields; $sorted = $unsort; uasort($sorted, array('uasortEngine', 'uasort_callback')); return $sorted;}使用范例如下:require_once('class.ArraySortUtil.php');// declare test data$assetData[] = array("id" = 1, "category"= "Hardware", "subcategory"= "Personal Computer", "supplier" = "DELL", "particular"= "Vostro 1320", "purchase_price"= 2300, "other_charges"= 500);$assetData[] = array("id" = 2, "category"= "Hardware", "subcategory"= "Personal Computer", "supplier" = "DELL", "particular"= "Vostro 1420", "purchase_price"= 2500, "other_charges"= $assetData[] = array("id" = 3, "category"= "Hardware", "subcategory"= "Laptop", "supplier" = "DELL", "particular"= "Vostro 1520", "purchase_price"= 4500, "other_charges"= 100);$assetData[] = array("id" = 4, "category"= "Hardware", "subcategory"= "Laptop", "supplier" = "Acer", "particular"= "Apire One", "purchase_price"= 2500, "other_charges"= 200);$assetData[] = array("id" = 5, "category"= "Furniture", "subcategory"= "Table", "supplier" = "CHEN", "particular"= "Manager Table", "purchase_price"= 1000, "other_charges"= $assetData[] = array("id" = 6, "category"= "Furniture", "subcategory"= "Table", "supplier" = "CHEN", "particular"= "Staff Table", "purchase_price"= 500, "other_charges"= $assetData[] = array("id" = 7, "category"= "Furniture", "subcategory"= "Chair", "supplier" = "CHEN", "particular"= "Staff Chair", "purchase_price"= 500, "other_charges"= $sorted = ArraySortUtil::multisort($assetData, array( array("field"= "category"), array("field"= "subcategory", "order" = true) // descecho " h1 multisort:result /h1 echo " pre print_r($sorted);echo " /pre $sorted = ArraySortUtil::uasort($assetData, array( array("field"= "category"), array("field"= "subcategory", "order" = true) // descecho " h1 uasort:result /h1 echo " pre print_r($sorted);echo " /pre 希望本文所述对大家的php程序设计有所帮助。PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表