填补多维数组中的空白

时间:2012-03-27 01:34:59

标签: php multidimensional-array

在多维数组中度过艰难时期。 我有一张电影表和这些电影的评级表。

我希望能够根据每个用户的评分为每个用户创建一个数组,例如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,但是一旦到达下一个用户就会停止。

1 个答案:

答案 0 :(得分:0)

为什么不假设如果它不存在,那么它是0?

if(empty($userRow['userID']][$row['Film_ID'])){
    //user hasn't rated it
}else{
    //user did rate it
}