php多维数组按用户自定义顺序排序uasort()
多维数组如果需要按照某个字段值进行排序,可以尝试array_multisort().但有一个前提,这个字段值的排序是要一定规律的,如字符升序a-z,或者数字降序等等.
$arr = array( array( 'id' => 1, 'name' => 'tyr', 'size' => 's', ), array( 'id' => 2, 'name' => 'aaa', 'size' => 'm', ), array( 'id' => 3, 'name' => 'aaa', 'size' => 'xl', ), array( 'id' => 4, 'name' => 'lhf', 'size' => 'l', ), array( 'id' => 5, 'name' => 'sfd', 'size' => '3xl', ),);$size=array('xs','s','m','l','xl','xxl','3xl');$num=array(2,3,1);function myNum($a,$b){//固定格式,$a,$b表示传入数组的子元素 if($a==$b){ return 0; } return $a>$b?-1:1;//返回-1表示排在前面,返回1则排在后面}usort($num,'myNum');var_dump($num);/*结果如下 array(3) { [0]=> int(3) [1]=> int(2) [2]=> int(1)} */function mySort($a,$b){//固定格式 $size=array('xs','s','m','l','xl','xxl','3xl'); $key1=array_search($a['size'],$size);//获取索引值 $key2=array_search($b['size'],$size); return strnatcmp($key1,$key2);//比较索引值并排序}usort($arr,'mySort');echo '<pre>';var_dump($arr);/*结果如下array(5) { [0]=> array(3) { ["id"]=> int(1) ["name"]=> string(3) "tyr" ["size"]=> string(1) "s" } [1]=> array(3) { ["id"]=> int(2) ["name"]=> string(3) "aaa" ["size"]=> string(1) "m" } [3]=> array(3) { ["id"]=> int(4) ["name"]=> string(3) "lhf" ["size"]=> string(1) "l" } [2]=> array(3) { ["id"]=> int(3) ["name"]=> string(3) "aaa" ["size"]=> string(2) "xl" } [4]=> array(3) { ["id"]=> int(5) ["name"]=> string(3) "sfd" ["size"]=> string(3) "3xl" }}*/class Mysort{ public function sortFunc($arr){ uasort($arr,array($this,'mySort')); return $arr; } public function mySort($a,$b){//固定格式 $size=array('xs','s','m','l','xl','xxl','3xl'); $key1=array_search($a['size'],$size);//获取索引值 $key2=array_search($b['size'],$size); return strnatcmp($key1,$key2);//比较索引值并排序 }} $arr = array( array( 'id' => 1, 'name' => 'tyr', 'size' => 's', ), array( 'id' => 2, 'name' => 'aaa', 'size' => 'm', ), array( 'id' => 3, 'name' => 'aaa', 'size' => 'xl', ), array( 'id' => 4, 'name' => 'lhf', 'size' => 'l', ), array( 'id' => 5, 'name' => 'sfd', 'size' => '3xl', ),);$obj=new Mysort();$res=$obj->sortFunc($arr);php多维数组按用户自定义顺序排序uasort()的更多相关文章
- PHP 二维数组根据某个字段排序
二维数组根据某个字段排序有两种办法,一种是通过sort自己写代码,一种是直接用array_multisort排序函数 一. 手写arraysort PHP的一维数组排序函数: sort 对数组的值按 ...
- 三重for循环实现对二维数组的按列排序(JavaScript)
由C语言联想到的:三重for循环实现对二维数组的按列排序,并且牵扯到数据结构. 自己写的,水平有限,本文属于原创,可能存在错误,忘指正~ function circle() { var a = [ [ ...
- PHP 二维数组某个字段进行排序
/** * @param $arrUsers * @return mixed *二维数组某个字段进行排序 */ function quick_sort($arrUsers) { $sort = arr ...
- PHP 按二维数组的键值排序
/** * 按二维数组的键值排序 * @param unknown $array 二维数组 * @param unknown $key 二维数组的键值 * @param string $order 升 ...
- PHP二维数组按某个字段排序
//准备 二维数组 //按一个字段排序 foreach($rank as $key=>$val){ $dos[$key] = $val['timelength']; } array_multis ...
- PHP开发小技巧②—实现二维数组根据key进行排序
在PHP中内置了很多对数组进行处理的函数,有很多时候我们直接使用其内置函数就能达到我们的需求,得到我们所想要的结果:但是,有的时候我们却不能通过使用内置函数实现我们的要求,这就需要我们自己去编写算法来 ...
- Java一维与二维数组的拷贝与排序
Java一维与二维数组的拷贝与排序 目录 Java一维与二维数组的拷贝与排序 Arrays.sort() 一维数组升序排序 二维数组按行升序排序 二维数组按列升序排序 Java中的数组 Java中数组 ...
- PHP 二维数组根据某个字段排序 复制代码 array_multisort
//二维数组,按照里面的age从大到小降序,代码如下 <?php header('Content-Type:text/html;Charset=utf-8'); $arrUsers = arra ...
- php 二维数组按某字段排序
思路很重要,最好的方法是查询时按这个字段给你排好,把问题丢给数据库,比如 order by age ,如果遇到中文时需要这样写(mysql) 如:select * from category ord ...
随机推荐
- 超级强大的SVG SMIL animation动画详解
本文花费精力惊人,具有先驱前瞻性,转载规则以及申明见文末,当心予以追究.本文地址:http://www.zhangxinxu.com/wordpress/?p=4333 //zxx: 本文的SVG在有 ...
- jQuery基础---Ajax基础教程(二)
jQuery基础---Ajax进阶 内容提纲: 1.加载请求 2.错误处理 3.请求全局事件 4.JSON 和 JSONP 5.jqXHR 对象 发文不易,转载请注明出处! 在 Ajax 基础一篇中, ...
- SSH框架中一些技巧、处理办法
1.使用jstree插件时,操作成功直接刷新jstree 该页面(index.jsp)本身使用iframe框架jstree在leftFrame,操作页(add_input.jsp.add_succes ...
- (转)DataTable添加行出现“该行已经属于另一个表”的错误!
1 DataTable dt1 = new DataTable(); DataTable dt2 = new DataTable(); //为dt1创建结构 DataColumn pName = ne ...
- grep 和 perl多个条件匹配
grep和perl多个条件匹配使用‘|’作为分割符号 grep -E 'abc|def' perl if(/abc|def/)
- 【转】commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar实现文件上传
总共:一个upload.jsp,一个FileUploadServlet.java,两个文件:ImagesUploaded,ImagesUploadTemp, 一个web.xml,两个架包:common ...
- zend studio 使用断点调试
1, 下载 Xdebug 1 # 下载地址 2 # http://xdebug.org/download.php 3 4 # 寻找和自己所安装的 php 版本对应的 Xdebug 下载 5 # 对 ...
- jquery EsayUi 里一个小弹框
网站后台大多的数据展示就都用和此插件有着密切的关系: 来用一下这个小弹框吧: 一个Html里面的代码 <link rel='stylesheet' type='text/css' href='c ...
- div模拟textarea以实现高度自适应实例页面
作为多行文本域功能来讲,textarea满足了我们大部分的需求.然而,textarea有一个不足就是不能像普通div标签一样高度可以跟随内容自适应.textarea总是很自信地显摆它的滚动条,高度固执 ...
- jacob 操作word转pdf
项目需要对上传的word及pdf进行在线预览,因基于jquery的pdf插件,很方面实现在线预览,而word实现在线预览费劲不少,于是想到在进行上传处理时,直接将word转成pdf,在预览时直接预览p ...