соответствует между двумя массивами по положению и значению в переполнении стека

Предположим, у меня есть два массива одинакового размера.
например:

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 (в том же фильме).

1

Решение

Вы можете перебрать оба массива и сравнить каждую пару элементов:

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;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]