手机版

详细说明PHP二维数组排序保持键名不变

时间:2021-08-27 来源:互联网 编辑:宝哥软件园 浏览:

要对二维数组中指定的键名进行排序,首先,每个人都会想到array_multisort函数。我之前也写过一篇关于array_multisort用法的废话。让我们看一个例子:

?PHP $ data=array(1001=array(' age '=22,' name'='库马Chi ')、1007=array('age'=21,' name'='慕容复')、1004=array ('age'=27,' name ')//根据字段age $ages=array_column($data,' age ')按升序对array $data进行排序;array_multisort($ages,SORT_ASC,$ data);print _ r($ data);

细心的朋友会看到键名被重置,键名从0开始。显然,这可能不是我们想要的结果,那么如何保持键名不变呢?让我们看另一个例子:

$ data=array(1001=array(' age '=22,' name'=' Kumar Chi '),1007=array('age'=21,' name'='慕容复'),1004=array ('age'=27,' name ')//根据字段age对array $data进行降序排序$ data=array sort($ data,' age ',' desc ');print _ r($ data);/* * * @返回array */函数arraySort($arr,$ keys,$ type=' ASC '){ $ key value=$ new _ array=array();foreach($ arr as $ k=$ v){ $ key value[$ k]=$ v[$ key];} if($ type==' ASC '){ natsort($ key value);} if($ type==' desc '){ natsort($ key value);$ key value=array _ reverse($ key value,TRUE);//按顺序翻转原始数组中的元素。如果第二个参数指定为true,元素的键名保持不变} foreach($ key值为$ k=$ v){ $ new _ array[$ k]=$ arr[$ k];}返回$ new _ array}在这里,我们还可以简化arraySort函数,处理结果是一样的:

/* * * @返回array */函数arraySort($arr,$ keys,$ type=' ASC '){ $ key value=$ new _ array=array();foreach($ arr as $ k=$ v){ $ key value[$ k]=$ v[$ key];} $type=='asc '?asort($ key value): arsort($ key value);foreach($ key value as $ k=$ v){ $ new _ array[$ k]=$ arr[$ k];}返回$ new _ array}从以上结果,我们可以看出:

键名不变,实现原理简单。首先取出键名,然后对键名进行排序,再根据对应的键名赋值,组成新的数组返回。如您所见,这里我们主要使用php的几个核心排序函数

Asort()根据键值以升序对关联数组进行排序。

Arsort()根据键值以降序对关联数组进行排序。

Natsort()实现了“自然排序”,即数字从1到9的排序方式,字母从A到Z的排序方式,短优先级。数组的索引与单元格值相关联,

注意:在自然排序算法中,数字2小于数字10。在计算机排序算法中,10小于2,因为“10”中的第一个数字小于2。

以上就是如何保持PHP 2D数组的排序键名不变。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

版权声明:详细说明PHP二维数组排序保持键名不变是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。