查看官方文档手册,array_multisort()方法的作用是对多个数组或者多维数组进行排序。这里重点介绍的是使用该方法对数组进行多重条件排序的实际使用场景。
比方说,在实际开发中,需要对一个数据数组进行排序,一共有五个项目数据,每个项目有两个参数,一个为是否在售,另一个为销售额度。要求对这组项目数据进行排序,在售的和销售额度大的优先。我们可以定一个数组对这样的排序需求进模拟:
其中”isGray”为0表示在售,为1表示售完,”num”表示项目销售额度,我们使用两个数组a和b分别保存五个项目的销售情况和销售额度,那么在排序前,各数组的情况如下:
arra: [1,0,0,1,0]
arrb: [2,4,3,8,6]
arr: [a,b,c,d,e]
然后我们使用
对项目数据进行在售情况和销售额度两个条件的排序,排序后各数组情况如下:
arra: [0,0,0,1,1]
arrb: [6,4,3,8,2]
arr: [e,b,c,d,a]
分析排序原理:
该方法中,三个数组中每个值的位置都是一一对应的。
1.该方法首先按照第一个数组中的值进行升序排序,则b数组中的‘4’、‘3’、‘6’会被提到数组前面,而‘2’、‘8’被放到数组后面,arr中的‘b’、‘c’、‘e’被提到组数前面,‘a’和‘d’被放到数组后面。
2.在第一次排序后,由于第一个数组中的前三个值和后两个值分别相等,所以需要按照第二个数组中的值进行第二次排序,而第二个数组的排序策略是降序排列。所以b数组中的[4,3,6]排序为[6,4,3],[2,8]排序为[8,2]。 arr中的[b,c,e]相应地排序为[e,b,c](因为b、c、e的销售情况都是在售0,即在第一个数组中对应位置的值相等,但是按照第二个数组中对应位置的销售额度来看,则为e>b>c,后面的a和d的排序以此类推),arr中的[a,d]相应地排序为[d,a]