php 按元素值獲取最佳元素組合

<?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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章