1

假设我有两个大小相同的数组。例如:

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 率与用户 2 率(在同一部电影中)有 60% 的匹配度。

4

1 回答 1

2

您可以遍历两个数组并比较每对元素:

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;
}
于 2015-11-07T10:31:49.577 回答