您的位置 首页 php

如果你不能自如排列数组,那就只好变秃了!PHP中sort系列

我不知道排序数组还要去写冒泡算法的大哥,你 凭什么不秃 ?!留着那点脑力长点腋毛也是毛啊!

但是如果你只知道一个sort(),不知道 asort(),ksort(),usort(),那么你也只能长点腋毛了。。!

1632000397771c9a55b9


sort()

简单干脆的小函数,一用,刷!你数组里的值就乖乖从小到大排好!如果你不知道它,请参见我第一句话的疑问。但是现在恭喜你,你知道了,看栗子完事儿:

谁前谁后如你所料:

16340003341be3178da9

一个你必须应该懂的排序小坑

上边要被排的成员们,如果编号里边一位数与两位数都有,比如:

$小数组=[‘3只松鼠’,’2我’,’8奥巴马’,’6川普’,’33岁的御姐’]; //多了位御姐

33比奥巴马还要大啊,我们用sort排个序看看吧:

162f00066c5c456087c0

什妈?为什么33会排在2和3之间??这确定是个坑。

原因是它会先比较数值的第一位字符,再比较第二位字符 。懂了吗?没懂请看:

第一位字符都是数字:2 < 3 ==3 <6 <8

注意中间两个3本来是并列的,所以再分高下只好用第二个字符了: 3 < 只

御姐的第二个字符是3,松鼠的第个二个字符是“只”

162f0006945716e4be43


排序小知道, 字库 的奥秘

有时我们排一下中文,发现他的规率似乎是按拼音,可有时又不是,WHY什么?

告诉你少年,因为它是按文字在字库里陈列的顺序排列的。 在字库里的汉字虽然大致和拼音有关,可不绝对。

比如上边那个例子里,是因为在字库里边,数字小于英文,英文小于汉字。所以3比“只”小。

对了,要解决上一个例子那种错误,注意让你的数字位数保持一致就好排序了!一位数前边加0。

02我<03只松鼠<06川普<08奥巴马<33御姐

奥巴马终于站到了御姐前边!

16340003638686709051


sort()前边加个r

就是反着排,从大到小咯:rsort()

r就是英文reverse,“反过来”的缩写,注意所有的排序都有这个小秘密,有加个r的版本。


联合数组难搞?asort()上

在大数据的时代,连数组里的值我们也要起个名字,叫键名是不。要不数据不好定位啊。

这种数组有个牛逼的官名儿:联合数组。

有个名字就是联合数组了!

1632000390b30495b679

比如:$小数组=[‘S级’=>’3只松鼠’,’A级’=>’2我’,’E级’=>’8奥巴马’,’M级’=>’6川普’, ‘D杯 ‘=>’33岁的御姐’]

看我们的数组成员有了名字,权当我对它们的评级。

可是sort以后我发现名字都没了!!!又变成了0123……的序号!!

不要着急,少年,只要用asort(),你的数组排完了还是那个联合数组!

(小秘密:a就是联合的英文缩写,但我不告诉你是哪个单词!)


注意加R的地方

asort()的反排是arsort()

注意,r是加在sort之前的,不是a之前。所有的r都紧跟sort,OK?


我要按键名排序!ksort()

k,就是key,就是键(不是贱!)

所以如果你想把数组成员按上边的键名称(我那个A到D的分级)来排序,告诉我,用ksort还是asort?

另外反向排键名称的函数,应该是rksort还是krsort?

看好你!

1634000365be73d646fa


我想按自己的想法排列我的小弟们!usort()

U就是you,就是你!你说了算。

谁在前?

这次我认为,名字越长的才是爸爸,所以名字越长越往前,那么我们就要写个函数。

162f0006992d88257e9d

在函数里我们只比较两个值,怎么比较我们定逻辑,然后让usort()调用就好。

函数里,返回负数意味着让前边的值和后边的值比起来时,前边的往前。而是正数则往后排。

注意看例子里的注释, 哥们我写累了,其实和上边比就多了一个函数

$小数组=[‘3只松鼠’,’2我’,’8奥巴马’,’6川普’,’33岁的御姐’]; //一个普通的小数组

function longNameIsFather($a,$b){

$lengthA= strlen ($a); //第一个数值有几个字儿

$lengthB=strlen($b); //第二个数值有几个字儿

if($lengthA>$lengthB) //来比比谁多

return -1; //A多那就让A往前放,返回负数

else

return 1; //A少那让A往后放,正数是后边

}

usort($小数组,”longNameIsFather”); 第二个参数用 字符串 写下你要调的函数

var_dump($小数组); //输出,看到谁是father了吗?

看结果,谁是爸爸?:

162f00068fbc73b55db5

我好像弄反了!!懒得调了,比起再改一下故事,宁愿当孙子。


usort()有kusort()

就是不比值,比键啊。要记住这个,就要理解一个道理,这个世界上,有时候就是要比贱。

另外usort和kusort没有r。么么哒。


设想一下你不知道以上sort系列,我们处理数据时要不要掉头发,嗯???

你的朋友们不知道,要不要掉!嗯???

现在,点赞,立刻!

然后转给他们看

16320003962a2246d20e


记住,对技术的精益求精,是一种极致(GEEK)的精神!!!!

爱我。

想听什么,每一个要求我都记录在案的,在评论告诉我!

文章来源:智云一二三科技

文章标题:如果你不能自如排列数组,那就只好变秃了!PHP中sort系列

文章地址:https://www.zhihuclub.com/41339.shtml

关于作者: 智云科技

热门文章

网站地图