2012-03-25 2 views
0

사용자 등급 배열에 문제가 있습니다. 시나리오는 숫자의 두 배열을 비교하고 코사인 유사성을 사용하는 방식이 비슷한지 계산하는 함수가 있습니다.사용자 및 등급에 대한 배열 만들기

한 사용자의 평점과 데이터베이스의 다른 사용자 x 명과의 유사도를 계산하여 가장 유사한 등급의 사용자를 찾고 싶습니다.

이 두 테이블은 영화 및 등급입니다. Film과 관련된 행은 filmID이며 등급에는 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 $ 사용자 3 [4, 3, 0] 주의 그 배열에 사용자 3, 그들이 평가하지 않은 영화는 이제 0입니다. 그런 다음이 배열은 유사성을 계산하는 함수로 전달됩니다.

내가 가진 테이블에서 사용자 배열을 얻는 방법을 모르겠습니다. 나는 약간의 코드를 썼지 만, 상당히 엉망이었다. 지금까지 내가 가지고있는 것 :

도움을 주셔서 감사합니다. 추가 정보가 필요하면 알려주십시오.

답변

1

당신은 실제로 당신의 쿼리 아무것도하지 않는 :

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

이 코드는 단순히 쿼리 결과를 순환하고 반복해서 덮어 변수로 각 행을 지정합니다. 루프가 끝나면 더 이상의 결과가 없을 때 mysql_fetch 호출에서 부울 false를 반환하므로 $ similarArray에 할당 된 거짓 값을 갖게됩니다.

그런 다음이 부울 false 값을 다른 경고에서 배열로 사용하여 모든 경고를 throw합니다. 도움을

$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

관련 문제