Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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_Arrays - Fatal编程技术网

Php 为用户及其评级创建数组

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

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

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

与此相关的两个表格是电影和收视率。与电影相关的行是filmID,分级有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'];   
    }       
}   
$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'];
}