前段时间遇到一个排序问题,大致是这样的:
$demo = array(
        0        =>        array(
                'name'        => 'yangyanfei',
                'sex'                => 'man',
                'age'        => 22,                        
        ),
        1        => array(
                'name'        => 'yangyanfei',
                'sex'                => 'man',
                'age'        => 25,                        
        ),
        2        => array(
                'name'        => 'yangyanfei',
                'sex'                => 'man',
                'age'        => 26,                        
        ),
)
//现在我们有这样一个需求,需要根据内层数组的age从大到小或者从小到大排序......
这个东西,跟我的第一反应,自己做排序吧,各种排序算法~~
突然想翻翻手册里面是否有这样的方法,为你提供好的内置方法~~
结果还真有这样的方法,就是array_multisort啦~~
想深研究的童鞋们可以去看看手册哦~
$tempArr = array(); //用户排序的临时数组
foreach($demo as $k=>$v){
        $tempArr[$k] = $v['age'];
}
array_multisort($tempArr,SORT_DESC,$demo); //第二个参数传排序规则
这里$demo即按照age已经从大到小排好了,说下啦~此函数会直接影响$demo 无需重新赋值~~~
像这样的业务很多吧,比如 我们一个数据列表,对内层数组的一个特定字段的值排序,又由于某些原因不符合你的业务需求,这时候那些底层helper又不能随便乱改,这个时候,可以考虑下这个内置方法 ~~~~~~

最后给一个小提示~~
array_merge这个家伙太坏了,如果你合并的索引式数组,小心点,它会把你的key干掉的,key会重新索引,这个时候 不妨试下 +
比如 
$arr = array(20=>'11',41=>'yang',12=>'yanfei');
$arrNew = array(21=>'1asdf1',66=>'yang',14=>'yangyanfeiyangyanfei');
$demo = array($arr,$arrNew); //这样的话,它会把你的数组key清除~~小心点~~~~
这个时候你不妨试试  $demo = $arr + $arrNew; //单纯的把数组连接起来~~~不会清除键值对应关系~~~~~

exit();

array_multisort array_merge 排序的更多相关文章

  1. php数组合并方法array_merge + 排序array_multisort方法 array_unique数组去重 array_values数组索引值重新从0开始递增

    $dingdan = array_merge($jie_dingdan,$user_dingdan);//数组合并方法 $orderFile = array(); foreach($dingdan a ...

  2. array_multisort 二维数组排序

    用PHP自带array_multisort函数排序 <?php $data = array();    $data[] = array('volume' => 67, 'edition' ...

  3. PHP 多维数组排序 array_multisort()

    用PHP自带array_multisort函数排序 <?php $data = array();    $data[] = array('volume' => 67, 'edition' ...

  4. php多维数组的指定单个字段排序

    多维数组如何根据指定键值?比如现在有数组结构如下: ,,,,,'subject' => 'math'), 1 => array('name' => '3班','avgScore'=& ...

  5. php一些高级函数方法

    PHP高级函数 1.call_user_func (http://php.net/manual/zh/function.call-user-func.php) 2.get_class (http:// ...

  6. php 数组排序 按照某字段

    $arr=[     array(         'name'=>'小坏龙',         'age'=>28     ),     array(         'name'=&g ...

  7. PHP数组排序和按数量分割

    用PHP自带array_multisort函数排序 <?php     $data = array();    $data[] = array('volume' => 67, 'editi ...

  8. PHP array_multisort—对多个数组或多维数组进行排序

    PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序. 关联(string)键名保持不变,但数字键名会被重新索引. 输入数组被当成一个表的列并以 ...

  9. php中的常用数组函数(八) 排序函数汇总(sort、rsort、usort、asort、uasort、arsort、ksort、uksort、krsort、natsort、natcasesort、array_multisort)

    测试环境:php5.3.29 sort_flags 可以用以下值改变排序的行为: 排序类型标记: SORT_REGULAR - 正常比较单元(不改变类型) SORT_NUMERIC - 单元被作为数字 ...

随机推荐

  1. Java中对象的内存分配机制

    一.内存划分 Java把内存划分为两种,一种是栈内存,另一种是堆内存. 1.栈内存 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配.当在一段代码块定义一个变量时,Java就在栈 ...

  2. python 脚本或者flask 注册成为windows服务

    分享下脚本注册成为win服务 这个借鉴了其他大佬得 具体是谁忘记了有机会推荐 今天也是找了之前得改出来得 首先安装三个模块 最后一个是定时任务如果不需要可以不装 pip install psutil ...

  3. URL中使用IPv4,IPv6和主机名

    在浏览器的Http请求的URL中如何使用IPv4,IPv6和主机名, 因为IPv6的地址需要加[],导致用法有点区别, 下面通过具体的例子总结一下不同情况下的用法. 1.假设有台Linux主机名配置如 ...

  4. Flink sql 之 两阶段聚合与 TwoStageOptimizedAggregateRule(源码分析)

    本文源码基于flink1.14 上一篇文章分析了<flink的minibatch微批处理>的源码 乘热打铁分析一下两阶段聚合的源码,因为使用两阶段要先开启minibatch,至于为什么后面 ...

  5. oracle 之 cursor:创建存储过程批量执行DDL语句

    说明:使用此过程可任意执行批量DDL语句,调用DDL查询语句时,注意转义字符,使用 ' 转义! 需求:批量删除以CUR_TEST开头的表,且有日志记录. 环境准备:建几张以CUR_TEST开头测试表. ...

  6. idea 开启 tomcat 热部署 的 具体流程 和 使用方式

    1前言 一直以来,使用idea做web开发修改html.jsp.js文件后,必须手动重新部署tomcat,最少都有等个6 -10 秒, 甚至有时候还提示找不到某个编译文件报错,重新编译整个项目,那得等 ...

  7. Python爬虫脚本 ,Uni-APP复选框做出双向绑定 ,Net5工作流建模 。的一点经验

    从业C#开发多年,现在也经常用到Python 做网络爬虫 ,用Uni-app做手机前端.攒了一点经验.供其他多语言开发程序员借鉴吧. Python做爬虫和其他的方式做爬虫最大的区别应该在于. Pyth ...

  8. php伪协议总结

    本篇总结下一些封装协议,涉及的相关协议:file://.php://filter.php://input.zip://.compress.bzip2://.compress.zlib://.data: ...

  9. 动态代理及java演示

    代理模式的理解     首先代理二字的含义,程序中代理与字面意思的代理并无区别.比如现实生活中办理车辆审车,我们经常会听说花钱找代理(又称黄牛)办手续,即办手续这个事,不是我们亲自执行,而是通过代理( ...

  10. 《剑指offer》面试题20. 表示数值的字符串

    问题描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100"."5e2"."-123"."3.1 ...