最近在做项目时,经常遇到处理数组并排序,类似如下数组:
$arr= array('1-1-1' => 'A',
'1-1-2' => 'B',
'1-2-10' => 'C',
'2-1-20' => 'D',
'2-2-1' => 'D',
'2-10-1' => 'D',
'3-1-10' => 'A',
'3-2-1' => 'D',
'3-10-3' => 'D',
'4-9' => 'E',
'4-1' => 'D',
'4-2' => 'F',
'4-5' => 'B',
'4-3' => 'D',
);
这里用到了php 自带的uksort函数来处理。
定义和用法
uksort() 函数使用用户自定义的比较函数按照键名对数组排序,并保持索引关系。
如果成功则返回 TRUE,否则返回 FALSE。
如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。
自定义函数应接受两个参数,该参数将被数组中的一对键名填充。比较函数在第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数。
语法
uksort(array,sorttype)
参数
描述
array
必需。规定要排序的数组。
function
必需。用户自定义的函数。函数必须设计为返回 -1, 0, 或 1,并应该接受两个供比较的参数,同时以类似下面这样的方式来工作:
如果 a = b, 返回 0
如果 a > b, 返回 1
如果 a < b, 返回 -1
测试代码如下:
uksort($arr, function($v1,$v2) {
$arr1 = explode('-', $v1);
$arr2 = explode('-', $v2);
for($i=0,$c = count($arr1);$i
if($arr1[$i] > $arr2[$i])
return 1;
else if ($arr1[$i] < $arr2[$i])
return -1;
}
});
echo "
";
print_r($arr);
排序后的数组:
Array
(
[1-1-1] => A
[1-1-2] => B
[1-2-10] => C
[2-1-20] => D
[2-2-1] => D
[2-10-1] => D
[3-1-10] => A
[3-2-1] => D
[3-10-3] => D
[4-1] => D
[4-2] => F
[4-3] => D
[4-5] => B
[4-9] => E
)
转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/11711.html
微信打赏
支付宝打赏
感谢您对作者Bruin的打赏,我们会更加努力! 如果您想成为作者,请点我