|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
完成一个功能齐全的动态站点实践开辟中,多几少城市碰到数组的排序成绩,除惯例的写复杂的排序算法,PHP还供应了内置数组排序函数,本次重点分享一下:uasort利用用户自界说的对照函数对数组中的值举行排序并坚持索引联系关系,可排序多维数组,本文重点解说此函数。uasort函数参数范例:booluasort(array&$array,callable$cmp_function)本函数对数组排序并坚持索引和单位之间的联系关系。次要用于对那些单位按次很主要的分离数组举行排序。对照函数是用户自界说的。乐成时前往TRUE,大概在失利时前往FALSE。数组排序实例(非class中):复制代码1/**2*自界说排序函数3*@param$param14*@param$param25*@return0(不挪动)1(正向互换按次)-1(逆向互换按次)6*/78functionmy_sort($param1,$param2){9if($param1==$param2)return0;10elsereturn$param1>$param2?1:-1;11}1213$arr=array(14a=>20,15b=>1,16c=>10,17d=>5,18e=>21,19f=>4,20g=>3,21);2223uasort($arr,my_sort);2425var_dump($arr);2627/*输入值28array(size=7)29b=>string1(length=1)30g=>string3(length=1)31f=>string4(length=1)32d=>string5(length=1)33c=>string10(length=2)34a=>string20(length=2)35e=>string21(length=2)36*/复制代码多维数组排序实例(非class中):复制代码/***自界说排序函数*@param$param1*@param$param2*@return0(不挪动)1(正向互换按次)-1(逆向互换按次)*/functionmy_sort($param1,$param2){if($param1[value]==$param2[value])return0;elsereturn$param1[value]>$param2[value]?1:-1;}$arr=array(a=>array(key=>界说1,value=>20),b=>array(key=>界说2,value=>1),c=>array(key=>界说3,value=>10),d=>array(key=>界说4,value=>5),e=>array(key=>界说5,value=>21),f=>array(key=>界说6,value=>4),g=>array(key=>界说7,value=>3),);uasort($arr,my_sort);var_dump($arr);/*输入值array(size=7)b=>array(size=2)key=>string界说2(length=7)value=>string1(length=1)g=>array(size=2)key=>string界说7(length=7)value=>string3(length=1)f=>array(size=2)key=>string界说6(length=7)value=>string4(length=1)d=>array(size=2)key=>string界说4(length=7)value=>string5(length=1)c=>array(size=2)key=>string界说3(length=7)value=>string10(length=2)a=>array(size=2)key=>string界说1(length=7)value=>string20(length=2)e=>array(size=2)key=>string界说5(length=7)value=>string21(length=2)*/复制代码class中排序,为了便利以二维数组为例:uasort($arr1,array($this,public_my_sort));uasort($arr2,array(self,self_my_sort));复制代码classmyClassSort{/***排序主办法*@param$arr1self静态排序*@param$arr2this排序*@return排序后的数组*/publicfunctionmain($arr1=array(),$arr2=array()){uasort($arr1,array($this,public_my_sort));uasort($arr2,array(self,self_my_sort));returnarray(arr1=>$arr1,arr2=>$arr2);}/***自界说排序函数*@param$param1*@param$param2*@return0(不挪动)1(正向互换按次)-1(逆向互换按次)*/privatestaticfunctionself_my_sort($param1,$param2){if($param1[value]==$param2[value])return0;elsereturn$param1[value]>$param2[value]?1:-1;}//同上publicfunctionpublic_my_sort($param1,$param2){if($param1[value]==$param2[value])return0;elsereturn$param1[value]>$param2[value]?1:-1;}}$arr=array(a=>array(key=>界说1,value=>20),b=>array(key=>界说2,value=>1),c=>array(key=>界说3,value=>10),d=>array(key=>界说4,value=>5),e=>array(key=>界说5,value=>21),f=>array(key=>界说6,value=>4),g=>array(key=>界说7,value=>3),);$myClassSort=newmyClassSort();var_dump($myClassSort->main($arr,$arr));/*输入了局同以上实例*/复制代码相似函数扩大array_multisort对多个数组或多维数组举行排序,可是终极填进利用的仍是详细一维数组arsort对一维数组举行逆向排序并坚持索引干系,坚持索引对应干系asort对一维数组举行正向排序并坚持索引干系,坚持索引对应干系krsort对数组依照键名逆向排序,坚持索引对应干系ksort对数组依照键名正向排序,坚持索引对应干系natcasesort用“天然排序”算法对一维数组举行不辨别巨细写字母的排序,能够用来排序数组内容中字母数字夹杂的情形,坚持索引对应干系natsort用“天然排序”算法对一维数组排序,辨别巨细写字母,能够用来排序数组内容中字母数字夹杂的情形,坚持索引对应干系rsort对一维数组逆向排序,不坚持索引对应干系sort对一维数组正向排序,不坚持索引对应干系uasort利用用户自界说的对照函数对数组中的值举行排序并坚持索引联系关系,可排序多维数组,本文重点解说此函数uksort利用用户自界说的对照函数对数组中的键名举行排序usort利用用户自界说的对照函数对数组中的值举行排序,不坚持索引联系关系PHP原始为PersonalHomePage的缩写,已经正式更名为"PHP:HypertextPreprocessor"。注意不是“HypertextPreprocessor”的缩写,这种将名称放到定义中的写法被称作递归缩写。 |
|