Heim >php教程 >php手册 >php专用数组排序类ArraySortUtil用法实例

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

WBOY
WBOYOriginal
2016-06-06 20:05:26937Durchsuche

这篇文章主要介绍了php专用数组排序类ArraySortUtil用法,实例分析了ArraySortUtil实现数组排序的方法与对应使用技巧,需要的朋友可以参考下

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

** * 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) $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; } }

使用范例如下:

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"=>0); $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"=>0); $assetData[] = array("id" => 6, "category"=>"Furniture", "subcategory"=>"Table", "supplier" => "CHEN", "particular"=>"Staff Table", "purchase_price"=>500, "other_charges"=>0); $assetData[] = array("id" => 7, "category"=>"Furniture", "subcategory"=>"Chair", "supplier" => "CHEN", "particular"=>"Staff Chair", "purchase_price"=>500, "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, array( array("field"=>"category"), array("field"=>"subcategory", "order" => true) // desc )); echo "

uasort:result

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

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn