[英]Find a matching or closest value in an array with multiple results php
我正在尝试找出一种方法来在 php 中的数组中获取匹配或最接近的值并获得多个结果。
假设我有一个这样的数组:
$arr = [0, 2, 4, 6, 8, 10, 13, 100];
我想获得最接近 3 的值。这应该是 output 2 和 4,因为它们同样接近。
我使用了另一个答案中的一些代码块,但这个只输出一个最终值; 2 在这个例子中。
function getClosest($search, $arr) {
$closest = null;
foreach ($arr as $item) {
if ($closest === null || abs($search - $closest) > abs($item - $search)) {
$closest = $item;
}
}
return $closest;
}
我如何创建可以帮助我实现目标的 function?
谢谢你。
由于您可能会返回多个数字,因此您的结果变量必须是一个数组(其中可能只有一个值)。
然后,您只需添加一个分支来检测相等性:
function getClosest($search, $arr) {
$closest = array();
foreach ($arr as $item) {
if (count($closest) == 0 || abs($search - $closest[0]) > abs($item - $search)) {
$closest = array(); // new minimal difference, reset array
$closest[] = $item ; // add new best candidate as first item of the list
}
elseif(abs($search - $closest[0]) == abs($item - $search))
{
// same difference, add item to closest list
$closest[] = $item ;
}
}
return $closest;
}
问题未解决?试试以下方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.