第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在數(shù)組中找到下一個(gè)更大的數(shù)字和下一個(gè)更小的數(shù)字

如何在數(shù)組中找到下一個(gè)更大的數(shù)字和下一個(gè)更小的數(shù)字

PHP
慕工程0101907 2022-12-30 16:06:02
最初,我有一個(gè)值,可以說100。然后我還有一個(gè)包含元素的數(shù)組[99, 101, 102, 103, 98, 95, 97]我想要的是,我想要一個(gè)新數(shù)組有一個(gè)最接近值的第一個(gè)元素,100 即101&99然后下一個(gè)最接近的值是102&98等等。所以最后的數(shù)組會(huì)是這樣的[99, 101, 98, 102, 97, 103, 95]那么在 php 中我該如何解決這個(gè)問題呢?這個(gè)問題有什么具體的算法嗎?
查看完整描述

2 回答

?
慕斯709654

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);

演示: https ://3v4l.org/QPX1o


查看完整回答
反對(duì) 回復(fù) 2022-12-30
?
慕村225694

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");

?>


查看完整回答
反對(duì) 回復(fù) 2022-12-30
  • 2 回答
  • 0 關(guān)注
  • 161 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)