2 回答

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以簡(jiǎn)單地在關(guān)聯(lián)數(shù)組中收集數(shù)字,鍵為與 100 的差值。稍后,您可以ksort()
根據(jù)差值對(duì)它們進(jìn)行排序。這樣,在很多普通情況下,您的分揀成本將降至最低。
<?php
$a = array(99, 95, 101, 102, 103, 98, 97, 110);
$number = 100;
$diff = [];
foreach($a as $ele){
$diff[abs($number - $ele)][] = $ele;
}
ksort($diff,SORT_NUMERIC);
print_r($diff);

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用usortorder 通過您定義的函數(shù)對(duì)數(shù)組進(jìn)行排序。正如@Pedro Pinheiro 在評(píng)論中提到的,您可以計(jì)算分?jǐn)?shù),表示元素與 100 的距離,這正是 usort 得到的。
所以你的代碼可以是:
<?php
function sort_100($a,$b)
{
if ($a==$b) return 0;
return (abs(100-($a))<abs(100-($b))?-1:1;
}
$a=array(99, 101, 102, 103, 98, 95, 97);
usort($a,"sort_100");
?>
- 2 回答
- 0 關(guān)注
- 161 瀏覽
添加回答
舉報(bào)