如何在php中计算两个不同长度数组的相似度百分比


How to calculate the percentage of similarity of two arrays of different length in php

我分别在两个数组中从数据库检索了两个用户的记录。这些记录都是关注别人的人,就像在推特上一样。因为两个用户可能会关注不同数量的人。所以这两个数组的长度是不同的。我已经创建了一个存储普通人(两个用户都追随的人)的新数组。我怎样才能得到两个用户的%相似度。假设两个用户有5个共同的关注者,他们的相似度比两个用户有2个共同的关注者要高。

foreach($common as $row){
//do events
echo $row['name']."<br>";
$count_common++;
}
echo "total common ".$count_common;
$similarity = (count($common)/(count($user1_follows))*100);

上面的公式不会计算出正确的结果,因为它是基于相同长度的数组。这里有一个与我相关的问题获取php

中两个数组的相似度百分比
$p1 = array("foo", "bar", "grep");
$p2 = array("foo", "buzz", "fizz", "bar");
$similar = array_intersect($p1, $p2);
$p1_perc = count($similar) / count($p1); // 0.66..
$p2_perc = count($similar) / count($p2); // 0.5

获取一个数字:

$perc = 2 * count($similar) / (count($p1) + count($p2)); // 0.5714..