我有搜索最近搜索的數字的腳本。 因此,例如,讓說,在陣列此數字:以遞歸方式轉換我的腳本?
'0'=> 1.72
'0.25'=> 1.92
'0.75'=> 2.35
「1 '=> 3.00
我在尋找0.50讓分,所以0.25和0.75在0.50的相同範圍內。
在這種情況下,我想得到更多的數字,在這個例子中是0.75。
代碼什麼的工作原理是:
function getClosest($search, $arr) {
$closest = null;
$num_arr = array();
$odd = 0.00;
$i = 0;
foreach ($arr as $handicap=>$item) { //first closest number
if ($closest === null || abs($search - $closest) > abs($handicap - $search)) {
$closest = $handicap;
$odd = $item;
}
else{
$num_arr[$handicap] = $item;
}
}
$newclosest = null;
$newodd = 0.00;
foreach($num_arr as $handicap=>$newitem){ //second closest number
if ($newclosest === null || abs($search - $closest) > abs($handicap - $search)) {
$newclosest = $handicap;
$newodd = $newitem;
}
}
//if difference between first and second number are same
if(abs($search - $closest) == abs($newclosest - $search)){
if($newclosest > $closest){ //if second number is greater than first
$closest = $newclosest;
$odd = $newodd;
}
}
return array('handicap'=>$closest,'odd'=>$odd);
}
我看到,我可以在這裏使用遞歸,但我沒有使用遞歸經歷。我知道我需要像這樣調用它:
$rec_arr = getClosest($num_arr,$search);
但我得到空白頁,即使我轉儲功能輸出。
我還沒有正確檢查它,但你錯誤地定位了你的函數調用 – onerror