Заполнение пробелов в многомерном массиве - PullRequest
0 голосов
/ 27 марта 2012

Трудное время с многомерными массивами.У меня есть таблица фильмов и таблица оценок для этих фильмов.

Я хочу иметь возможность создавать массив для каждого пользователя на основе их оценок, например, user1 будет выглядеть как Array ( [1] => Array ( [1] => 5 ) [2] => Array ( [34] => 5 ) ).Таким образом, во втором массиве индексы - это filmID, а их значения - рейтинги фильмов.

Мне удалось это сделать, однако мне нужно посмотреть, не оценил ли пользователь фильм, и если это так, необходимо создать индекс для этого фильма в массиве сзначение 0. Это значит, что все пользовательские рейтинговые массивы имеют одинаковую длину, и их можно запустить через функцию, чтобы сравнить, насколько похожи их рейтинги.

<code>$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).'
';

Именно так я создаю многомерные массивы, просто не зная, как «заполнить пробелы».

Спасибо за любую помощь, которую я получаю, и если вы не уверены или вам нужна дополнительная информация, просто дайте мне знать.

РЕДАКТИРОВАТЬ
Я только что написалследующий код:

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 голосов
/ 27 марта 2012

Почему бы просто не предположить, что если он не существует, это 0?

if(empty($userRow['userID']][$row['Film_ID'])){
    //user hasn't rated it
}else{
    //user did rate it
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...