2012-03-25 9 views
0

ユーザー評価の配列を取得する際に問題があります。このシナリオでは、2つの数値配列を比較し、コサインの類似性を使用してどれほど似ているかを計算する関数を用意しています。ユーザーとその評価のための配列の作成

私はこれを使用して、1人のユーザーからの評価の類似度を計算し、データベース内の他のユーザーのx人に最も類似する評価のユーザーを探します。

この2つの表は、映画と評価です。 Filmに関連する行はfilmIDであり、ratingには行filmID、userID、およびratingがあります。例えば:

filmId userID rating 
1  1  3 
1  3  4 
2  1  2 
3  1  2 
2  3  3 

だから、ユーザー1のために、私は配列$ USER1たいと思います[3、2、2]とユーザーのための3 $ USER3 [4、3、0] お知らせ配列のためのものユーザー3、彼らが評価していない映画はゼロになりました。これらの配列は、類似性を計算する関数に渡されます。

私はテーブルからユーザーアレイを取得する方法がわかりません。私はいくつかのコードを書いたが、かなり困惑している。これまでのところ、私は持っています:

$users = mysql_query("SELECT * FROM user"); 
$ratings = mysql_query("SELECT * FROM ratings"); 

while ($userRow = mysql_fetch_assoc($users)) { 
    $similarCheck = mysql_query("SELECT * FROM ratings WHERE userID =".$userRow['userID']); 
    $similarArray = mysql_fetch_assoc($similarCheck); 
    $count = 0; 
    while ($similarArray = mysql_fetch_assoc($similarCheck)){ 
     $count++; 
    } 
    for ($i=0; $i < $count; $i++){ 
    $user1 = array(); 
    $user1[$i] = $similarArray['rating']; 
    }  
} 

私は受け取ってくれてありがとう。詳しい情報が必要な場合は、私に知らせてください。

答えて

1

あなたが実際にあなたのクエリを使って何をやっていない:

while ($similarArray = mysql_fetch_assoc($similarCheck)){ 
    $count++; 
} 

このコードは単純にクエリの結果をループして、何度も上書きされる変数に各行を割り当てます。ループが終了すると、$ similarArrayに割り当てられたFALSE値が返されます。それ以上の結果がない場合、mysql_fetch呼び出しはブール値falseを返します。

次に、このブール値を別のループで配列として使用して、あらゆる種類の警告をスローします。助けのための

$similarCheck = mysql_query("SELECT * FROM ratings WHERE userID =".$userRow['userID']) or die(mysql_error()); 
$similarArray = array(); 
while($row = mysql_fetch_assoc($similarcheck)) { 
    $similarArray[] = $row['rating']; 
} 
+0

ありがとう:あなたはこのような何かをしたい

たぶん! – HelloWorld

関連する問題