bonzie Posted June 15, 2006 Share Posted June 15, 2006 hello I am stuck with the following script. I have spent hours to make the whole script and now I tried it out and apparently the values I assign to the array based on the sql-query appear to be lost. When I try the 'echo' statement (last line of code) I dont get any output![code]$a=array();for ($i=1; $i<=NUMBERI; $i++){ for ($j=1; $j<=NUMBERJ; $j++) { $a[$i][$j]=0; }}echo $a[1][1];for ($i=1; $i<=NUMBERI; $i++){ for ($j=1; $j<=NUMBERJ; $j++) { .....// here a sql-query ..... if ($num_results>0) { $a[$i][$j]=1; } else { $a[$i][$j]=0; } }}echo $a[1][1];[/code]Anyone who knows what I do wrong? Quote Link to comment https://forums.phpfreaks.com/topic/12068-what-do-i-wrong/ Share on other sites More sharing options...
trq Posted June 15, 2006 Share Posted June 15, 2006 Sorry, but that code makes little sense. Where do you define the constants NUMBERI and NUMBERJ ? Quote Link to comment https://forums.phpfreaks.com/topic/12068-what-do-i-wrong/#findComment-45901 Share on other sites More sharing options...
bonzie Posted June 15, 2006 Author Share Posted June 15, 2006 these are defined earlier in the script so they have a value.[!--quoteo(post=384184:date=Jun 15 2006, 03:32 PM:name=thorpe)--][div class=\'quotetop\']QUOTE(thorpe @ Jun 15 2006, 03:32 PM) [snapback]384184[/snapback][/div][div class=\'quotemain\'][!--quotec--]Sorry, but that code makes little sense. Where do you define the constants NUMBERI and NUMBERJ ?[/quote] Quote Link to comment https://forums.phpfreaks.com/topic/12068-what-do-i-wrong/#findComment-45903 Share on other sites More sharing options...
trq Posted June 15, 2006 Share Posted June 15, 2006 And what are there values then? Help us help you. Put this code in context.... show us your query code... something?I dont understand why you even have this code.... what is it meant to do? Quote Link to comment https://forums.phpfreaks.com/topic/12068-what-do-i-wrong/#findComment-45911 Share on other sites More sharing options...
bonzie Posted June 15, 2006 Author Share Posted June 15, 2006 I need to construct a kind of recommendation algorithm.I have a table in mysql named 'has_bought' with columns 'user_id' and 'item_id'. So an entry means that 'user' has bought 'item'.I need to construct a vector V for each user in the 'itemspace': You can think of this as the rows of a binary matrix A where the columns are the items:eg:user 1 |0 1 1|user 2 |1 0 1|user 3 |0 1 1|This means that user 1 has bought item 2 and 3.The constant NUMBERI is the number of users and the constant NUMBERJ the number of items in the database. They are defined as [code]$query_num_users="select * from people"; // table people contains data about users, key is user_id $result_num_users=mysql_query($query_num_users, $connect); $num_users=mysql_num_rows($result_num_users);define (NUMBERI, $num_users);$query2="select item_id from item"; // table item contains data about all the items of the shop $result=mysql_query($query2,$connect); $num_results=mysql_num_rows($result);//define constant NUMBERJdefine (NUMBERJ, $num_results);[/code]I have constructed the array $a ['user']['item'] because I need to make compare the vectors of the different users to determine the most similar users to a certain user (the one logged in).I create the array with the following code:[code]$a();for ($user_id=1; $user_id<=NUMBERI; $user_id++){ for ($item_id=1; $item_id<=NUMBERJ; $item_id++) { $a[$user_id][$item_id]=0; }}[/code]Now i would like toassign a 1 to a combination of user-item if the user has bought the item:To find this in the database I constructed the following query:[code]// to find combinations user-itemfor ($user_id=1; $user_id<=NUMBERI; $user_id++){ for ($item_id=1; $item_id<=NUMBERJ; $item_id++) {query3="select * from has_bought where user_id=".$user_id." and item_id=".$item_id.""; $result3=mysql_query($query3, $connect); $num_results_query3=mysql_num_rows($result3);// to assign the values to the array $a to create the binary matrix A (rows are the users and columns the items) if ($num_results_query3>0)//if an entry found, this means that user has bought the item { $a[$user_id][$item_id]=1; } else { $a[$user_id][$item_id]=0; } }}[/code][!--quoteo(post=384194:date=Jun 15 2006, 03:38 PM:name=thorpe)--][div class=\'quotetop\']QUOTE(thorpe @ Jun 15 2006, 03:38 PM) [snapback]384194[/snapback][/div][div class=\'quotemain\'][!--quotec--]And what are there values then? Help us help you. Put this code in context.... show us your query code... something?I dont understand why you even have this code.... what is it meant to do?[/quote] Quote Link to comment https://forums.phpfreaks.com/topic/12068-what-do-i-wrong/#findComment-45926 Share on other sites More sharing options...
bonzie Posted June 15, 2006 Author Share Posted June 15, 2006 Ok, I have been trying again and again. But I am still stuck with this... [img src=\"style_emoticons/[#EMO_DIR#]/unsure.gif\" style=\"vertical-align:middle\" emoid=\":unsure:\" border=\"0\" alt=\"unsure.gif\" /] Is it maybe because I assign values to the array in a for-loop that I can't get these values outside the loop?[img src=\"style_emoticons/[#EMO_DIR#]/unsure.gif\" style=\"vertical-align:middle\" emoid=\":unsure:\" border=\"0\" alt=\"unsure.gif\" /] [!--quoteo(post=384209:date=Jun 15 2006, 04:07 PM:name=bonzie)--][div class=\'quotetop\']QUOTE(bonzie @ Jun 15 2006, 04:07 PM) [snapback]384209[/snapback][/div][div class=\'quotemain\'][!--quotec--]I need to construct a kind of recommendation algorithm.I have a table in mysql named 'has_bought' with columns 'user_id' and 'item_id'. So an entry means that 'user' has bought 'item'.I need to construct a vector V for each user in the 'itemspace': You can think of this as the rows of a binary matrix A where the columns are the items:eg:user 1 |0 1 1|user 2 |1 0 1|user 3 |0 1 1|This means that user 1 has bought item 2 and 3.The constant NUMBERI is the number of users and the constant NUMBERJ the number of items in the database. They are defined as [code]$query_num_users="select * from people"; // table people contains data about users, key is user_id $result_num_users=mysql_query($query_num_users, $connect); $num_users=mysql_num_rows($result_num_users);define (NUMBERI, $num_users);$query2="select item_id from item"; // table item contains data about all the items of the shop $result=mysql_query($query2,$connect); $num_results=mysql_num_rows($result);//define constant NUMBERJdefine (NUMBERJ, $num_results);[/code]I have constructed the array $a ['user']['item'] because I need to make compare the vectors of the different users to determine the most similar users to a certain user (the one logged in).I create the array with the following code:[code]$a();for ($user_id=1; $user_id<=NUMBERI; $user_id++){ for ($item_id=1; $item_id<=NUMBERJ; $item_id++) { $a[$user_id][$item_id]=0; }}[/code]Now i would like toassign a 1 to a combination of user-item if the user has bought the item:To find this in the database I constructed the following query:[code]// to find combinations user-itemfor ($user_id=1; $user_id<=NUMBERI; $user_id++){ for ($item_id=1; $item_id<=NUMBERJ; $item_id++) {query3="select * from has_bought where user_id=".$user_id." and item_id=".$item_id.""; $result3=mysql_query($query3, $connect); $num_results_query3=mysql_num_rows($result3);// to assign the values to the array $a to create the binary matrix A (rows are the users and columns the items) if ($num_results_query3>0)//if an entry found, this means that user has bought the item { $a[$user_id][$item_id]=1; } else { $a[$user_id][$item_id]=0; } }}[/code][/quote] Quote Link to comment https://forums.phpfreaks.com/topic/12068-what-do-i-wrong/#findComment-45954 Share on other sites More sharing options...
trq Posted June 15, 2006 Share Posted June 15, 2006 Im sorry, but I still just can't understand what your doing. Anyway, try adding....[code]print_r($a);[/code]to the end of the script, this will give you an idea of how what your final array contains.... maybe that will lead you to a solution. Quote Link to comment https://forums.phpfreaks.com/topic/12068-what-do-i-wrong/#findComment-45976 Share on other sites More sharing options...
bonzie Posted June 15, 2006 Author Share Posted June 15, 2006 that is the problem, then the array doesn't exist anymore:print_r($a); doesn't give anythingeuh maybe I put the problem differentlyyou have for example a matrix A,the rows are the users and the columns the items:|100||011||001|A 1 in the matrix indicates that the user has bought the itemI have a SQL table has_bought([u]item_id[/u], ([u]item_id[/u]), so with mysql I can determine if a user has bought a particular item. I thought of contructing an array to represent the matrix A:[code]array([user1]=>array([item1]=>1 [item2]=>0 [item3]=>0)array([user1]=>array([item1]=>0 [item2]=>0 [item3]=>0)... [/code] Therefore I use [code]$arr_user_item=array();for ($user_id=1; $user_id<=NUMBERUSERS; $user_id++){ for ($item_id=1; $item_id<=NUMBERITEMS; $item_id++) { $arr_user_item[$user_id][$item_id]=0; //this value of row '$user_id' and column 'item_id' in matrix A }}[/code]Until now everything works. When I for example do[code]echo $arr_user_item[1][1];[/code]I get 0 on my screen.However I have to assign the right values to the array using the mysql-query on table has_bought.When I do this like I have showed earlier and I do again echo $arr_user_item[1][1]; or even print_r[$arr_user_item] nothing seems to happen.[code]for ($item_id=1; $item_id<=NUMBERUSERS; $item_id++) //constant NUMBERUSERS is the total number of users in our database{ for ($item_id=1; $item_id<=NUMBERITEMS; $item_id++) //constant NUMBERITEMS is the total number of items in our database {// to see if user has bought the item $query_user_item="select * from has_bought where user_id=".$user_id." and item_id=".$item_id.""; $result_user_item=mysql_query($query_user_item); $num_results_user_item=mysql_num_rows($result_user_item); // if an entry found is found then user has bought the item: if ($num_results_user_item>0) { $arr_user_item[$user_id][$item_id]=1; } else { $arr_user_item[$user_id][$item_id]=0; } }}[/code]When i do now print_r ($arr_user_item); I don't get anything.I checked if my query worked and yes it did. So why can't I work with my array after I assigned new values?[!--quoteo(post=384259:date=Jun 15 2006, 06:26 PM:name=thorpe)--][div class=\'quotetop\']QUOTE(thorpe @ Jun 15 2006, 06:26 PM) [snapback]384259[/snapback][/div][div class=\'quotemain\'][!--quotec--]Im sorry, but I still just can't understand what your doing. Anyway, try adding....[code]print_r($a);[/code]to the end of the script, this will give you an idea of how what your final array contains.... maybe that will lead you to a solution.[/quote] Quote Link to comment https://forums.phpfreaks.com/topic/12068-what-do-i-wrong/#findComment-45997 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.