php专用数组排序类ArraySortUtil用法实例
发布时间:2020-05-23 23:55:22 所属栏目:PHP 来源:互联网
导读:这篇文章主要介绍了php专用数组排序类ArraySortUtil用法,实例分析了ArraySortUtil实现数组排序的方法与对应使用技巧,需要的朋友可以参考下
本文实例讲述了php专用数组排序类ArraySortUtil用法。分享给大家供大家参考。具体如下: $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,"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程序设计有所帮助。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |