2012-03-27 17 views
0

多次元アレイでは苦労します。 私は映画のテーブルとこれらの映画の評価のテーブルを持っています。多次元アレイのギャップを充填する

各ユーザーのレーティングに基づいてアレイを作成できます。たとえば、user1はArray ([1] => Array ([1] => 5) [2] => Array ([34] => 5))のようになります。したがって、2番目の配列では、インデックスはfilmIDであり、その値はフィルムのレーティングです。

私はこれを成功させましたが、ユーザーが映画を評価していないかどうかを確認する必要があります。この場合、配列内のこのフィルムのインデックスを作成する必要があります。これはすべてのユーザ格付け配列が同じ長さであるため、格付けの類似性を比較する関数を実行することができます。

$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>'; 

これは、多次元配列を作成する方法であり、「ギャップを埋める」方法はわかりません。

ご連絡いただきありがとうございました。ご不便をおかけいたしますが、ご不明な点がございましたら、お知らせください。

EDIT
私は、次のコードを書かれている:

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を作成し、データベース内ONEのユーザーのために働きますしかし、データベース内では、次のユーザーに到達すると停止します。

+0

「LEFT JOIN」は必要なものです – zerkms

答えて

0

なぜ存在しないのであれば、それは0であると仮定しないでください。

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