幽灵资源网 Design By www.bzswh.com
本文实例讲述了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) <= 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 ) "caseSensitve"] : false;
if (!$caseSensitve) $array_data = array_map('strtolower', $array_data);
$parameters[] = $array_data;
if ( $sortfield["order"] != null ) $parameters[] = ( $sortfield["order"] ) "nature"] != null ) $parameters[] = ( $sortfield["nature"] ) "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"]) "order"] : self::$sortorder;
$_caseSensitve = isset($sortfield["caseSensitve"]) "caseSensitve"] : self::$caseSensitve;
$_nature = isset($sortfield["nature"]) "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) "htmlcode">
<"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"=>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 "<h1>multisort:result</h1>";
echo "<pre>";
print_r($sorted);
echo "</pre>";
$sorted = ArraySortUtil::uasort($assetData, array(
array("field"=>"category"),
array("field"=>"subcategory", "order" => true) // desc
));
echo "<h1>uasort:result</h1>";
echo "<pre>";
print_r($sorted);
echo "</pre>";
希望本文所述对大家的php程序设计有所帮助。
幽灵资源网 Design By www.bzswh.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
幽灵资源网 Design By www.bzswh.com
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。