<?php
function getClosest($search, $arr) {
$closest = null;
$keyNow = null;
$keys = null;
$min = min($arr);
if ($search <= 0) return '';
foreach ($arr as $key => $item) {
if ($closest === null || abs($search - $closest) > abs($item - $search)) {
$closest = $item;
$keyNow = $key;
}
}
unset($arr[$keyNow]);
$searchNow = abs($closest - $search);
if ($searchNow !== 0 && !empty($arr) && $searchNow >= $min) {
$keys .= ',' . getClosest($searchNow, $arr);
}
array_push($keys, $keyNow);
$keys .= ',' . $keyNow;
return trim($keys, ',');
}
$arr = array(
'1001' => 100,
'1002' => 200,
'1007' => 200,
'1003' => 300,
// '1004' => 400,
'1005' => 500,
);
$sr = 800;
echo "=================" . PHP_EOL;
$a = getClosest($sr, $arr);
echo $a;
echo PHP_EOL . "=================" . PHP_EOL;
php 按元素值獲取最佳元素組合
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.