Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较PHP用户之间的相似性_Php_Mysql_Sql_Percentage_Similarity - Fatal编程技术网

比较PHP用户之间的相似性

比较PHP用户之间的相似性,php,mysql,sql,percentage,similarity,Php,Mysql,Sql,Percentage,Similarity,我正在制作一个带有用户系统的网站 并希望通过他们的配置文件匹配用户,这些配置文件有20个字段 我希望用户可以得到一个匹配与其他用户,当他们超过50%,这是10个字段的20相同 我已经知道了: $query = "SELECT * FROM users WHERE username='test'"; $result = mysqli_query($db_conx, $query); $array = mysqli_fetch_row($result); $quer

我正在制作一个带有用户系统的网站 并希望通过他们的配置文件匹配用户,这些配置文件有20个字段

我希望用户可以得到一个匹配与其他用户,当他们超过50%,这是10个字段的20相同

我已经知道了:

    $query = "SELECT * FROM users WHERE username='test'";
    $result = mysqli_query($db_conx, $query);
    $array = mysqli_fetch_row($result);

    $query2 = "SELECT * FROM users WHERE username='test2'";
    $result2 = mysqli_query($db_conx, $query2);
    $array2 = mysqli_fetch_row($result2);

    $similar = array_intersect($array, $array2);
    $p2_perc = count($similar) / count($array2);

    echo round($p2_perc * 100) . "% equal";
我希望用户能够自动显示特定的用户,但我可以解决这个问题

有人吗

提前谢谢 非常感谢

真正的问题是这样的

$query2 = "SELECT * FROM users LIMIT 1";
if ($query2 similarity > 50%)
echo "$user2";

您可以将其组合到一个查询中,如下所示:

SELECT
    user1.username,
    user2.username,
    (
        (user1.row1=user2.row1) + 
        (user1.row2=user2.row2) +
        ...
    )/20 AS score
FROM
    users AS user1,
    users AS user2
WHERE
    user1.username <> user2.username
HAVING
    score > 0.5

问题在哪里?什么有效/无效?这似乎是可行的……但很难看出失败的地方上面的代码显示了两个用户的相似性百分比,但我想使用query2$query2=“SELECT*FROM users”;因此,它只会选择与您的用户表的列相似程度超过50%的用户。我想这取决于您的用户表的列。您能澄清一下吗?您是否正在搜索任何与您事先知道其身份的特定用户“相似”的用户?或者你打算扫描所有用户对,寻找最匹配的用户>你好,我想这会有用的,你能帮我做点什么吗?我想将用户测试和derping与行equal1、equal2、equal3和equal4进行比较。我很困,所以你能帮我吗?如果我想将当前登录的用户与所有用户(*)进行比较,并获得50%或更多匹配的用户,该怎么办?我的第一次查询会将每个用户与其他用户进行对比。第二个检查当前登录的用户与所有其他用户,并返回得分大于0.5(50%)的用户。第二个问题回答了你的第二个问题。如果您只想检查两个用户,请将它们添加到WHERE子句中?或者这是错误的?不工作in$query=“选择test.username,baro.username,((test.option1=baro.option1)+(test.gender=baro.gender)+(test.state=baro.state))/3作为测试用户的分数,用户作为baro,其中test.username baro.username和test.username=“$log_username”的分数大于0.5”$结果=mysqli\u查询($db\u conx,$query)$数组=mysqli\u fetch\u行($result);回波阵列;是否有错误消息?还是什么都没有?是否确实有一些应该显示的结果,或者当前用户没有一些匹配项?删除“HAVING…”以显示所有其他用户,而不考虑分数。它不显示任何内容:s
SELECT
    user1.username,
    user2.username,
    (
        (user1.row1=user2.row1) + 
        (user1.row2=user2.row2) +
        ...
    )/20 AS score
FROM
    users AS user1,
    users AS user2
WHERE
    user1.username <> user2.username AND
    user1.username = 'CURRENTLY_LOGGED_IN_USER'
HAVING
    score > 0.5