易捷网络专注企业网站建设
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。
还有一点值得注意:这个函数改变数字索引,其他索引不变!

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


浙江爱就推门玩具网站制作首页设计效果图
浙江爱就推门玩具
吴江正大纺织厂网站制作首页设计效果图
吴江正大纺织厂
广东思远工程技术网站制作首页设计效果图
广东思远工程技术
东莞吉川机械科技网站制作首页设计效果图
东莞吉川机械科技
华星(深圳)新材料网站制作首页设计效果图
华星(深圳)新材料
东莞索诚电子网站制作首页设计效果图
东莞索诚电子
上海科宁会展服务网站制作首页设计效果图
上海科宁会展服务
广州波士特实验室设备网站制作首页设计效果图
广州波士特实验室设备
河南赛唯家具网站制作首页设计效果图
河南赛唯家具
东莞纳普电子科技网站制作首页设计效果图
东莞纳普电子科技
 

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


网站建设制作服务之前需要了解网站是什么利于seo的title等标签的几个设置技巧热点信息为什么很难长期保持热度的原因有哪些医院网站优化应当留意哪一方面简而美!神奇的等待页面案例鉴赏外贸网站建站时,应该掌握哪些局部和特殊功能的设计技巧深圳网站设计制作,网站设计要如何符合用户的浏览习惯网站的域名是不是会危害网站的排名 网站设计公司哪家售后好 网站建设如何做才可以给客户带来信任感深圳福田网站制作哪家专业,中小企业新网站优化的时候要注意什么网站seo应该从哪些方面做seo优化技巧分享做网站怎么定位才能突破商城网站建设:厂家企业电商未来趋势在深圳做网站,做网站的流程是怎样互联网信息服务单位网络安全责任告知书营销型网站SEO优化的的难点是什么一个优秀的网站建设方案要注意哪些地方如何找到适合您企业的管理软件,定制软件的成本是多少深圳网站建设的新标准:审美与营销相结合建设中小型企业网站应该注意哪几点HTML5响应式网站为什么那么受到大家的喜爱 靠谱的网站设计模板制作电话 如何成为深圳网站建设先进品牌深圳商务营销型网站建设的几点要素aspmaker如何加入在线HTML编辑器为什么软件定制项目难做软件外包公司该怎么发展制定遵循搜索引擎思路的网站方案网页制作:企业邮箱有什么好处企业在做网站时如何提高网站建设的质量深圳网站制作 做网站设计有哪些开发心得怎么选择深圳定制化网站建设响应式网站设计对企业网站发展有多重要HTML5网站建设中的优势都有什么什么是营销型网站建设营销型网站建设应具备哪些特点作用有哪些浅谈div+css建站如何成为建站者的优选如何设计出更加完美的网站电商网站开发的注意事项都有哪些建设企业网站中要注意三个核心问题-广州网站建设百度整改反馈功能上线:首批通知石榴算法命中站点大数据用法!搞定极简风格网站制订一个搜索引擎营销(SEM)计划一个备受欢迎的深圳网站设计是怎样的手机页面设计的细节盘点!网站建设的主要类型定制开发网站与模板网站的区别网站建设成企业标配五大必知原则!网站上线后需要维护哪些方面的内容网上兼职被骗了,但申请维权又进坑怎么办网站权重受什么因素的影响深圳企业网站建设中target的用法网站建设制作公司提供备案不用关闭网站的方法网站导航的设计的细节电商网站设计要做好哪些要点做网站应注意哪些要素建站前如何选择关键词解析360友链平台的使用评测好的网站建设公司到底好在哪里国外虚拟主机租用,有什么优点找网站建设公司开发设计网站需要注意什么网站建设常见的问题都有哪些
企业网站建设行业信息服务发布平台!
(www.fantodo.com)版权所有
QQ在线咨询