php专用数组排序类ArraySortUtil用法实例
发布时间:2020-12-13 02:32:58 所属栏目:PHP教程 来源:网络整理
导读:《:php专用数组排序类ArraySortUtil用法实例》要点: 本文介绍了:php专用数组排序类ArraySortUtil用法实例,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解php专用数组排序类ArraySortUtil用法.供大家参考研究.具体如下: PHP应用 ** * A
《: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 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,"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 "<h1>multisort:result</h1>"; echo "<pre>"; print_r($sorted); echo "</pre>"; $sorted = ArraySortUtil::uasort($assetData,"order" => true) // desc )); echo "<h1>uasort:result</h1>"; echo "<pre>"; print_r($sorted); echo "</pre>"; 希望本文所述对大家的php程序设计有所赞助. 编程之家培训学院每天发布《:php专用数组排序类ArraySortUtil用法实例》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何替换从Drupal中的模块加载的page.tpl.php?
- 在WAMP环境下搭建ZendDebugger php调试工具的方法
- 可以使用pecl install pdo_sqlsrv使用php 5.5.3在Linux / U
- php中计算未知长度的字符串哪个字符出现的次数最多的代码
- 在PHP中使用XSLT 2.0的最佳方法是什么?
- 函数参数中的PHP标志是什么?
- PHP获取unix时间戳的00:00:00
- php echo, print, print_r, sprintf, var_dump, var_expor的
- php – 将Curl客户端ssl移动到Guzzle
- PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印