在多维数组中度过艰难时期。 我有一张电影表和这些电影的评级表。
我希望能够根据每个用户的评分为每个用户创建一个数组,例如user1看起来像Array ( [1] => Array ( [1] => 5 ) [2] => Array ( [34] => 5 ) )
。所以在第二个数组中,索引是filmID,它们的值是电影评级。
我已成功完成此操作,但是我需要查看用户是否未对电影进行评级,如果是这种情况,则需要在数组中为此电影创建索引,值为0这样所有用户评级数组都具有相同的长度,然后可以通过一个函数来比较它们的评级有多相似。
$similarArray = array();
$films = mysql_query("SELECT * FROM films");
$users = mysql_query("SELECT * FROM user");
while ($userRow = mysql_fetch_assoc($users)) {
$similarCheck = mysql_query("SELECT * FROM ratings WHERE userID = ".$userRow['userID']);
while($row = mysql_fetch_assoc($similarCheck)) {
$similarArray[$userRow['userID']][$row['Film_ID']] = $row['rating'];
}
}
echo'<pre>'.print_r($similarArray).'</pre>';
这就是我创建多维数组的方式,只是不确定如何“填补空白”。
感谢您提供的任何帮助,如果您感到困惑或需要更多信息,请告诉我们。
修改
我刚刚编写了以下代码:
while ($userRow2 = mysql_fetch_assoc($user2)){
while ($filmRow2 = mysql_fetch_assoc($films2)){
if (array_key_exists ($filmRow2['Film_ID'], $similarArray[$userRow2['userID']])) {
echo "exists";
} else {
$similarArray[$userRow2['userID']][$filmRow2['Film_ID']] = "0";
}
}
}
这适用于数据库中的一个用户,根据数据库中有多少部电影创建n个数字键,评级为0,但是一旦到达下一个用户就会停止。
答案 0 :(得分:0)
为什么不假设如果它不存在,那么它是0?
if(empty($userRow['userID']][$row['Film_ID'])){
//user hasn't rated it
}else{
//user did rate it
}