例如,如果您有一组数字5,4,3,2,1
,并且您希望所有数字排序最接近3,那么结果将为3,2,4,5,1
。
我尝试使用uasort
并编写自定义排序函数来获取固定数字(在本例中为3),但它不起作用。我写了一个函数,使得固定数字远离当前正在比较的两位数,并将abs
应用于它们。
我需要一种方法,我可以比较哪个数字比较当前访问的数字的接近程度,并将其插入数组中的正确位置。
有什么想法吗?可以使用uasort
吗?
答案 0 :(得分:9)
uasort()
已经是一个好的开始。现在您只需使用距离3作为标准来对数组进行排序:
number | 0 | 1 | 2 | 3 | 4 | 5 | 6 | --------------------------------------- distance | 3 | 2 | 1 | 0 | 1 | 2 | 3 |
代码:
uasort($arr, function($a, $b){
return abs(3-$a) - abs(3-$b);
});