Php 为用户及其评级创建数组
我在获取一系列用户评级时遇到问题。场景是,我有一个函数比较两个数字数组,并使用余弦相似性计算它们的相似程度 我想用它来计算一个用户的评分相似性,到数据库中其他用户的x数,找到评分最相似的用户 与此相关的两个表格是电影和收视率。与电影相关的行是filmID,分级有filmID行、userID行和rating行。例如:Php 为用户及其评级创建数组,php,mysql,arrays,Php,Mysql,Arrays,我在获取一系列用户评级时遇到问题。场景是,我有一个函数比较两个数字数组,并使用余弦相似性计算它们的相似程度 我想用它来计算一个用户的评分相似性,到数据库中其他用户的x数,找到评分最相似的用户 与此相关的两个表格是电影和收视率。与电影相关的行是filmID,分级有filmID行、userID行和rating行。例如: filmId userID rating 1 1 3 1 3 4 2 1 2 3
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'];
}
}
$users=mysql\u查询(“选择*来自用户”);
$ratings=mysql_查询(“从评级中选择*);
而($userRow=mysql\u fetch\u assoc($users)){
$similarCheck=mysql_query(“从userID=“.$userRow['userID'])的评级中选择*);
$similarray=mysql\u fetch\u assoc($similarCheck);
$count=0;
而($similarray=mysql\u fetch\u assoc($similarCheck)){
$count++;
}
对于($i=0;$i<$count;$i++){
$user1=array();
$user1[$i]=$similarray['rating'];
}
}
谢谢你对我的帮助。如果您需要任何进一步的信息,请告诉我。您的查询实际上没有做任何事情:
while ($similarArray = mysql_fetch_assoc($similarCheck)){
$count++;
}
这段代码只是在查询结果中循环,并将每一行分配给一个变量,然后该变量被一次又一次地覆盖。当循环退出时,您将为$similarray分配一个FALSE值,因为当没有更多结果时,mysql\u fetch调用将返回一个布尔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'];
}