首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为用户及其评分创建数组

为用户及其评分创建数组
EN

Stack Overflow用户
提问于 2012-03-26 07:12:10
回答 1查看 117关注 0票数 0

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

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

与此相关的两个表是电影和收视率。与电影相关的行是filmID,评级具有行filmID、userID和评级。例如:

代码语言:javascript
复制
filmId   userID   rating
1        1        3
1        3        4
2        1        2
3        1        2
2        3        3

因此,对于用户1,我想要一个数组$user13,2,2,而对于用户3,$user34,3,0,请注意,在用户3的数组中,他们没有评级的电影现在是零。然后将这些数组传递给函数以计算相似度。

我不知道如何从我拥有的表中获取用户数组。我写了一些代码,但还是被难住了。到目前为止,我有:

代码语言:javascript
复制
$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'];   
    }       
}   

感谢您对我的帮助。如果您需要任何进一步的信息,请让我知道。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-26 07:21:57

您实际上并没有对您的查询做任何操作:

代码语言:javascript
复制
while ($similarArray = mysql_fetch_assoc($similarCheck)){
    $count++;
}  

这段代码简单地遍历查询结果,并将每一行分配给一个变量,然后该变量被一遍又一遍地覆盖。当循环退出时,您将拥有一个分配给$similarArray的False值,因为当没有更多的结果时,mysql_fetch调用将返回一个布尔值FALSE。

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

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

代码语言:javascript
复制
$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'];
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9864894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档