2012-03-27 93 views
0

使用多維數組難度很大。 我有一張電影表和這些電影的收視率表。填充多維數組中的間隙

我希望能夠爲每個用戶根據他們的評級創建一個數組,例如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"; 
     } 
    } 
} 

這適用於一個用戶在數據庫的基礎上,有多少薄膜與評級0創建數組鍵的n個在數據庫中,但是一旦它到達下一個用戶就會停止。

+0

'LEFT JOIN'是你需要的 – zerkms 2012-03-27 01:43:30

回答

0

爲什麼不假設如果它不存在,它是0?

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