假设我有两个大小相同的数组。例如:
array1 = array(5, 8, 6, 4);
array2 = array(5, 8, 7, 8);
我需要知道它们之间在百分比上的匹配。但必须通过位置和值进行匹配。在这个例子中,匹配的是array[0]
,array[1]
,所以我需要50%的匹配。
如果我想把它复杂化一点,我可以说如果array1[2]
和array2[2]
之间的差小于1 (7-6=1
),那么百分比应该是52%,因为6和7几乎是一样的。
我需要这个,因为我想在我的网站上比较2个用户的速率,用户可以评分电影,我想告诉他们,user1的速率有60%的匹配用户2的速率(在同一部电影)。
发布于 2015-11-07 18:31:50
您可以遍历这两个数组并比较每对元素:
function compareArrays($arr1, $arr2, $diffThreshold) {
# Assumption: both arrays are the same length.
# If this isn't a valid assumption, take the length of the shortest
$length = count($arr1);
$ctr = 0;
for ($i = 0; $i < $length; ++$i) {
if (abs($arr1[i] - $arr2[i]) <= $diffThreshold) {
++$ctr;
}
}
return $ctr / $length;
}
https://stackoverflow.com/questions/33581565
复制相似问题