【问题标题】:Filling in gaps in multi dimensional array填充多维数组中的空白
【发布时间】:2012-03-27 01:34:59
【问题描述】:

很难处理多维数组。 我有一张电影表和这些电影的评分表。

我希望能够根据每个用户的评分为每个用户创建一个数组,例如 user1 看起来像 Array ( [1] => Array ( [1] => 5 ) [2] => Array ( [34] => 5 ) )。所以在第二个数组中,索引是电影ID,它们的值是电影评级。

我已经成功了,但是我需要查看用户是否没有对电影进行评分,如果是这种情况,则需要在数组中为该电影创建一个索引,值为 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";
        }
    }
}

这适用于数据库中的 ONE 用户,根据数据库中有多少电影创建 n 个数组键,评级为 0,但是一旦到达下一个用户,它就会停止。

【问题讨论】:

    标签: php multidimensional-array


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多