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

时间:2013-01-02 17:12:04

标签: php arrays compare percentage similarity

我分别从两个数组中的数据库中检索了两个用户的记录。这些记录是关注其他人的记录,就像在twitter中一样。 由于两个用户可能跟随不同数量的人。所以两个数组的长度是不同的。我创建了一个新的数组来存储普通人(两个用户都跟着的人)。 如何获得两个用户的%相似度。假设两个用户有5个共同关注者,他们的相似性高于2个共同拥有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);

上述公式不计算正确的结果,因为它基于具有相同长度的数组。 以下是与get the percentage of similarity of two arrays in php

相关的问题

1 个答案:

答案 0 :(得分:9)

$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..