博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
array_multisort 函数的使用
阅读量:4495 次
发布时间:2019-06-08

本文共 1568 字,大约阅读时间需要 5 分钟。

w3c上的解释

定义和用法

array_multisort() 函数返回排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。

注释:字符串键名将被保留,但是数字键名将被重新索引,从 0 开始,并以 1 递增。

注释:您可以在每个数组后设置排序顺序和排序类型参数。如果没有设置,每个数组参数会使用默认值。

语法如下:

array_multisort(array1,sorting order,sorting type,array2,array3...)

看了半天的例子还是没怎么看懂,在此举个例子说明下该函数的意思:

有一个多维数组如下:

$guys = [    [        'number'=>'1',        'score' => 90,        'name'  => 'song',    ],    [        'number'=>'2',        'score' => 90,        'name'  => 'dong',    ],    [        'number'=>'3',        'score' => 80,        'name'  => 'mong',    ]];

三个学生的数据,number代表学号,score是成绩,name是姓名。对学生进行排序,首先按照成绩从高到低,再按照姓名按照字符串从低到高排序,按照我们的要求,那么排好后的顺序应该是:

2、1、3

下面将如何用该函数实现:

首先提取出来成绩和姓名数组。使用该函数,参数中每个数组的长度要一样,否则会报错的。

$scores = array();$names  = array();foreach ($guys as $value) {    $scores[] = $value['score'];    $names[]  = $value['name'];}

提取的姓名数组,成绩数组和需要排序的学生数组都是有三项,符合要求。先按照成绩降序,如果成绩相同,再按照名字升序。如果成绩都不相同,那么名字排序是没用的。

array_multisort($scores,SORT_DESC,$names,SORT_ASC,$guys);print_r($scores);print_r($names);print_r($guys);

打印出来的效果如下:

Array(    [0] => 90    [1] => 90    [2] => 80)Array(    [0] => dong    [1] => song    [2] => mong)Array(    [0] => Array        (            [number] => 2            [score] => 90            [name] => dong        )    [1] => Array        (            [number] => 1            [score] => 90            [name] => song        )    [2] => Array        (            [number] => 3            [score] => 80            [name] => mong        ))

排序前后,三个数组的顺序都是一一对应的,即三个数组是同步变化的,所以达到了对第三个数组的排序。

转载于:https://www.cnblogs.com/wyzs/p/5257425.html

你可能感兴趣的文章
some thing for wp8 development!
查看>>
iOS马甲包上架总结
查看>>
JDBC下
查看>>
第七章 路由 77 路由-使用children属性实现路由嵌套
查看>>
spring+hibernate+springmvc整合框架搭建
查看>>
监控spark-sql 等脚本
查看>>
Java基础(十二):包(package)
查看>>
java字符编码
查看>>
跨域Ajax原理以及浏览器同源策略
查看>>
Altium Designer如何设置元件自动编号解决编号冲突
查看>>
图像处理中滤波器(卷积核)
查看>>
Codeforces 178B1-B3 Greedy Merchants
查看>>
QT记录
查看>>
JavaScript 第十章总结:first class functions
查看>>
C#冒泡排序法及优化
查看>>
Manacher算法
查看>>
【遥感专题系列】微波遥感(一、基础入门)
查看>>
django2.0 + python37 + vue 实战 网站开发,安卓app生成
查看>>
Java学习小笔记——Method
查看>>
.Net分布式架构(一):Nginx实现负载均衡
查看>>