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

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

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;
}
Другие вопросы по тегам