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

前端之家收集整理的这篇文章主要介绍了php专用数组排序类ArraySortUtil用法实例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例讲述了PHP专用数组排序类ArraySortUtil用法分享给大家供大家参考。具体如下:

PHP;"> ** * ArraySortUtil is a array sort utility,you can extends the sorting engine. * * @version 0.1 * @package utility.sort */ 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; } }

使用范例如下:

PHP;"> 1,"category"=>"Hardware","subcategory"=>"Personal Computer","supplier" => "DELL","particular"=>"Vostro 1320","purchase_price"=>2300,"other_charges"=>500); $assetData[] = array("id" => 2,"particular"=>"Vostro 1420","purchase_price"=>2500,"other_charges"=>0); $assetData[] = array("id" => 3,"subcategory"=>"Laptop","particular"=>"Vostro 1520","purchase_price"=>4500,"other_charges"=>100); $assetData[] = array("id" => 4,"supplier" => "Acer","particular"=>"Apire One","other_charges"=>200); $assetData[] = array("id" => 5,"category"=>"Furniture","subcategory"=>"Table","supplier" => "CHEN","particular"=>"Manager Table","purchase_price"=>1000,"other_charges"=>0); $assetData[] = array("id" => 6,"particular"=>"Staff Table","purchase_price"=>500,"other_charges"=>0); $assetData[] = array("id" => 7,"subcategory"=>"Chair","particular"=>"Staff Chair","other_charges"=>0); $sorted = ArraySortUtil::multisort($assetData,array( array("field"=>"category"),array("field"=>"subcategory","order" => true) // desc )); echo "

multisort:result

"; echo "
";
 print_r($sorted);
echo "
"; $sorted = ArraySortUtil::uasort($assetData,"order" => true) // desc )); echo "

uasort:result

"; echo "
";
 print_r($sorted);
echo "
";

希望本文所述对大家的PHP程序设计有所帮助。

原文链接:https://www.f2er.com/php/22192.html

猜你在找的PHP相关文章