gpt4 book ai didi

php - 为用户及其评分创建数组

转载 作者:行者123 更新时间:2023-11-29 14:31:50 25 4
gpt4 key购买 nike

我在获取用户评分数组时遇到问题。场景是,我有一个函数可以比较两个数字数组,并使用余弦相似度计算它们的相似程度。

我想用它来计算一个用户的评分与数据库中 x 个其他用户的相似度,找到评分最相似的用户。

与此相关的两个表是电影和收视率。与 Film 相关的行是 filmID,而 ratings 包含行 filmID、userID 和 rating。例如:

filmId   userID   rating
1 1 3
1 3 4
2 1 2
3 1 2
2 3 3

因此,对于用户 1,我想要一个数组 $user1[3, 2, 2],对于用户 3 $user3[4, 3, 0]请注意,在用户 3 的数组中,他们尚未评分的电影现在为零。然后,这些数组将被传递给函数来计算相似度。

我不知道如何从我拥有的表中获取用户数组。我写了一些代码,但我很困惑。到目前为止我已经:

$users = mysql_query("SELECT * FROM user");
$ratings = mysql_query("SELECT * FROM ratings");

while ($userRow = mysql_fetch_assoc($users)) {
$similarCheck = mysql_query("SELECT * FROM ratings WHERE userID =".$userRow['userID']);
$similarArray = mysql_fetch_assoc($similarCheck);
$count = 0;
while ($similarArray = mysql_fetch_assoc($similarCheck)){
$count++;
}
for ($i=0; $i < $count; $i++){
$user1 = array();
$user1[$i] = $similarArray['rating'];
}
}

感谢我收到的任何帮助。如果您需要任何进一步的信息,请告诉我。

最佳答案

您实际上并没有对查询执行任何操作:

while ($similarArray = mysql_fetch_assoc($similarCheck)){
$count++;
}

此代码只是循环遍历查询结果并将每一行分配给一个变量,然后一遍又一遍地覆盖该变量。当循环退出时,您将向 $similarArray 分配一个 FALSE 值,因为当没有更多结果时 mysql_fetch 调用会返回 bool 值 false。

然后,您尝试在另一个循环中使用这个 bool false 值作为数组,这将引发各种警告。

您很可能想要这样的东西:

$similarCheck = mysql_query("SELECT * FROM ratings WHERE userID =".$userRow['userID']) or die(mysql_error());
$similarArray = array();
while($row = mysql_fetch_assoc($similarcheck)) {
$similarArray[] = $row['rating'];
}

关于php - 为用户及其评分创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9864894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com