Предположим, у меня есть два массива одинакового размера.
например:
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 (в том же фильме).
Вы можете перебрать оба массива и сравнить каждую пару элементов:
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;
}
Других решений пока нет …