php uksort,php uksort 数组排序【原创】

最近在做项目时,经常遇到处理数组并排序,类似如下数组:

$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

75d087ef9a9fb11dc373caaf33adbf7f.png

微信打赏

支付宝打赏

感谢您对作者Bruin的打赏,我们会更加努力!    如果您想成为作者,请点我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值