≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

php 专用数组排序类用法示例

人气:624 时间:2018-09-21

这篇文章主要为大家详细介绍了php 专用数组排序类用法示例,具有一定的参考价值,可以用来参考一下。

对php专用数组排序的类 ArraySortUtil感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!

/**
 * php专用数组排序的类 ArraySortUtil
 * @param 
 * @author 四海网 www.q1010.com
 * 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; 
	} 
}
/***   来自四海网(www.q1010.com)   ***/

本文来自:http://www.q1010.com/173/649-0.html

注:关于php 专用数组排序类用法示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:数组排序

您可能感兴趣的文章

上一篇:php 自定义分页类功能实例
下一篇:php 获取网页上所有链接的简单示例
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。