3

我分别从两个数组中的数据库中检索了两个用户的记录。这些记录是关注其他人的人,就像在 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);

上面的公式不计算正确的结果,因为它是基于具有相同长度的数组。这是我的一个相关问题,用于获取 php 中两个数组的相似度百分比

4

1 回答 1

10
$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..
于 2013-01-02T17:14:50.450 回答