易捷网络专注企业网站建设
11年企业网站建设经验、响应式网站建设,兼容PC、手机、平板全
终端,给你更佳的浏览体验...

PHP多维数组的排序之array_multisort()

来源:网站建设行业资讯网
添加时间:2022-02-13

array_multisort()这个函数可以对多个PHP数组进行排序,排序结果是所有的数组都按第一个数组的顺序进行排列——有点拗口,真的,并且我要只是这样说你一定也不明白。先举个例子:
例如array_multisort($a,$b),$a,$b是两个数组,如果排序之后,$a数组的第3个元素被排到了第一位,那么$b的第三个元素不管他在$b中的大小都会排在第一位。看看下边的程序运行结果:

<?php
$a=array(100,80,50,10,0);
$b=array("c","f","q","e","z");
array_multisort($a,$b);
var_dump($a);
var_dump($b);
?>
运行结果:
array(5){[0]=>int(0)[1]=>int(10)[2]=>int(50)[3]=>int(80)[4]=>int(100)}
array(5){[0]=>string(1)“z”[1]=>string(1)“e”[2]=>string(1)“q”[3]=>string(1)“f”[4]=>string(1)“c”}

很显然本来是数组b第五个元素的z被排到了第一位!

其实说明白了就是,array_multisort()先把第一个数组按照键值的大小排序,然后其它数组都按照第一个数组的调整策略进行调整——第三个元素放到第一位,第二个元素放到第二位……——其实这个多维数组排序算法的最基本体现!

不过需要注意的是:两个数组的元素个数必须相同,不然就会出现一个警告信息:
Warning:array_multisort()[function.array-multisort]:Arraysizesareinconsistentin……

好了,希望上边的大家也能用上,咱们还是说主要的吧:array_multisort()对多维数组进行排序,这个功能将来做项目的时候是非常有用的!

首先我们看看对多维数组的每一元素[数组]进行排序的操作方法,很简单,但是有几个参数需要说明一下,如果您对sql有所了解一看估计就明白了:
<?php
//让我们来构造一个多维数组
$a=array(100,2,4,7,7);
$b=array(''ab'',''ac'',''ad'',''ag'',''ap'');

$ab=array($a,$b);
//开始排序
array_multisort($ab[0],SORT_NUMERIC,SORT_DESC,$ab[1],SORT_STRING,SORT_ASC);
print_r($ab);
?>
说明一下:首先我们用SORT_NUMERIC来声明对$ab[0]用数字类型排序,用SORT_DESC
声明顺序是逆序(从大到小),然后我们对$ab[1]用字符串类型排序,顺序是升序(顺序)
最后数组$ab的排序结果是两者的结合,先按$ab[0]的逆序,如果$ab[0]中存在大小相同的数值则按照$ab[1]的顺序排列,输出结果如下:

Array(
[0]=>Array([0]=>100[1]=>7[2]=>7[3]=>4[4]=>2)
[1]=>Array([0]=>ab[1]=>ag[2]=>ap[3]=>ad[4]=>ac)
)
是不是很像在数据库中用orderby?其实真的差不多!

现在我们再看一个更加贴近实际应用的例子:
<?php
$array[]=array("age"=>20,"name"=>"li");
$array[]=array("age"=>21,"name"=>"ai");
$array[]=array("age"=>20,"name"=>"ci");
$array[]=array("age"=>22,"name"=>"di");

foreach($arrayas$key=>$value){
$age[$key]=$value[''age''];
$name[$key]=$value[''name''];
}

array_multisort($age,SORT_NUMERIC,SORT_DESC,$name,SORT_STRING,SORT_ASC,$array);
print_r($array);
?>
这个例子的$array[]数组,是按照数据库中读出的记录来构造的,我们现在对他们按照年龄从大到小的顺序排列,如果年龄相同就按照名字的顺序排序。这样的排序才是我们将来会经常用的到的,
因为array_multisort()需要的排序参数必须是一个列,所以我们用foreach把这个数组的年龄和姓名读出来,之后呢?
就像上边的例子一样,进行排序,最后一个参数$array想必大家也看见了,是的这里需要声明对哪个数组进行排序,因为我们前边两个参数在形式上已经和需要排序的PHP数组没有关系了,虽然其实他们就是$array中的数据——我们从$array中抽取的列——排序当然是需要列,还没见过用行数据进行排序的呢!

输出结果如下——正如我们所想的:
Array(
[0]=>Array([age]=>22[name]=>di)
[1]=>Array([age]=>21[name]=>ai)
[2]=>Array([age]=>20[name]=>ci)
[3]=>Array([age]=>20[name]=>li)
)

看到了吧,其实也很简单,就是那几个需要大写的参数有点烦人而已!虽说也有点难以理解,但是理解了就好了,将来很有用的哦!
附录:
排序顺序标志:

SORT_ASC–按照上升顺序排序
SORT_DESC–按照下降顺序排序

排序类型标志:

SORT_REGULAR–将项目按照通常方法比较
SORT_NUMERIC–将项目按照数值比较
SORT_STRING–将项目按照字符串比较

每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效–在此之前为默认值SORT_ASC和SORT_REGULAR。
还有一点值得注意:这个函数改变数字索引,其他索引不变!

网站建设计最新案例赏析:


浙江爱就推门玩具网站制作首页设计效果图
浙江爱就推门玩具
东莞吉川机械科技网站制作首页设计效果图
东莞吉川机械科技
东莞禾聚精密电子科技网站制作首页设计效果图
东莞禾聚精密电子科技
山东博纳电气网站制作首页设计效果图
山东博纳电气
广州飞进信息科技网站制作首页设计效果图
广州飞进信息科技
深圳共安智能科技网站制作首页设计效果图
深圳共安智能科技
深圳大狮影业摄影广告网站制作首页设计效果图
深圳大狮影业摄影广告
华星(深圳)新材料网站制作首页设计效果图
华星(深圳)新材料
吴江正大纺织厂网站制作首页设计效果图
吴江正大纺织厂
广东思远工程技术网站制作首页设计效果图
广东思远工程技术
 

网站建设行业资讯推荐阅读:


怎么做网站设计才算标准常见的美国优质虚拟主机对比评测js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码为什么做软件定制项目很难赚钱企业官网如何设计让颜值up!up!科技教您如何解决新站带www的网页不被收录的问题圆形是如何吸引用户关注网站软件定制开发进阶教程!如何让网站体现真实价值网站建设中有哪些你必须要注意的为什么要办理经营性ICP许可证网站设计遵循的基本规则如何让新网站快速被百度收录内页如何让网站灵活轻巧今年中秋节应该怎么做好自己的网站设计如何找到一款适合自己企业的管理软件,以及定制软件的费用是多少网站建设能够给企业带来什么如何提高网站建设的收录率2021年新手怎么自己制作网站企业网站设计要如何制作才能高大上网站建设必须遵守的原则外包公司软件定制该何去何从掌握搜索引擎优化及搜索引擎营销科技解析为什么网站内容难以被搜索引擎收录的原因网站建设小技巧,揪出网站无效链接网站更新的文章全是原创为何还会出現降权状况深圳网站建设之网站上线之后的运营方法学校网站设计制作这些方面要考虑周全网站设计用有哪些留白小技巧解析全网整合营销网站建设,商城网站设计需要注意哪些问题讲述一下官方网站建设对企业是有多重要呢一个哪些的网站才算“有情怀的网站”域名后缀不同对网站优化有影响吗深圳网站制作中谈如何识破友情链接的陷阱网站首页设计的四种方法六招推广技巧帮您提升企业销售量微博营销的方式有哪些网站建成后无法正常访问是怎么回事网站建设对企业的功效极大企业网站常见耗资源原因分析与对策SEO优化排名中,外链权重将弱化深圳网站建设合同条款如何保障客户的权益企业网站建设的常见问题与解答电子邮件营销:掌握你的电子邮件订阅者物流公司网站建设对企业有什么作用呢网站域名与IP地址的不同之处在哪网站建设|国内企业对互联网有复杂心态,原因有哪些网站内容改版要注意哪些事项网站如何提高用户黏性网站建设需要准备哪些材料一般要多久能完成网站建设助力企业全面营销浙江省林业网站建设获多项荣誉微信朋友圈的活跃度如何提高科技:网站关键词排名应该找什么公司去做网站的产品详情页应该怎么设计新手如何进行网站建设深圳网站优化可用性要点深圳公司选用响应式官网会为企业的发展带来那些帮助教育行业网站建设有哪些方法
企业网站建设行业信息服务发布平台!
(www.fantodo.com)版权所有
QQ在线咨询