reyesfuchsia
New Member
I need to sort an associative-array in the exact order of the content of another array.The Arrays are retrieve by 2 separate sql-requests (stated below). The requests could not be combined to only one request, so I have to sort the second array into the order of the first one.These are the arrays:\[code\]#Array which contains the id's in needed order$sorting_array = array(1,2,3,8,5,6,7,9,11,10...);#Array which contains the values for the id's, but in order of "id" ASC$array_to_sort = array( array("id" => "1", "name" => "text1", "help" => "helptxt2"); array("id" => "2", "name" => "text2", "help" => "helptxt2");\[/code\]The SQL-Queries:
SQL-Ouery for $sorting_array:
(the db-field 'conf' is setup as "text", maybe this is my problem so that I have to first explode and implode the entries before I could use it for the next query.)\[code\]$result = sql_query("select conf from config where user='me'", $dbi);$conf = sql_fetch_array($result, $dbi);$temp = explode(',', $conf[0]); $new = array($temp[0], $temp[1], $temp[2], $temp[3],$temp[4], $temp[5], $temp[6], $temp[7], $temp[8], $temp[9], $temp[10], ...);#Array has max 30 entries, so I count them down here$sorting_array = implode(',', $new);\[/code\]SQL-Ouery for $array_to_sort:\[code\]$result = sql_query("SELECT id, name, helptxt FROM table WHERE id IN ($sorting_array) AND language='english'"); while ($array_to_sort[] = mysql_fetch_array ($result, MYSQL_ASSOC)) {}array_pop($array_to_sort);#deleting the last null entry\[/code\]I could access $array_to_sort as follows to see the content one by one:
(if the lines below don't match the array above, than I mixed it up. However, the lines below is what brings the content)\[code\]echo $array_to_sort[0]["id"];echo $array_to_sort[0]["name"];echo $array_to_sort[0]["helptxt"];\[/code\]But it is sorted by "id" ASC, but I need exactly the sorting as in $sorting_array.I tried some things with:
\[code\]while(list(,$array_to_sort) = each($sorting_array)){$i++;echo $array_to_sort . "<br>";}\[/code\]which only brings the Id's in the correct order, but not the content. Now I'm a bit confused, as I tried so many things, but all ended up in giving me the same results.
Maybe the sql-query could be done in one step, but I didn't brought it to work.All results to my searches just showed how to sort ASC or DESC, but not what I want.
Furthermore I must confess that I'm relative new to PHP and MySQL.
Hopefully some one of you all could bring me back on track.
Many thanks in advance.
SQL-Ouery for $sorting_array:
(the db-field 'conf' is setup as "text", maybe this is my problem so that I have to first explode and implode the entries before I could use it for the next query.)\[code\]$result = sql_query("select conf from config where user='me'", $dbi);$conf = sql_fetch_array($result, $dbi);$temp = explode(',', $conf[0]); $new = array($temp[0], $temp[1], $temp[2], $temp[3],$temp[4], $temp[5], $temp[6], $temp[7], $temp[8], $temp[9], $temp[10], ...);#Array has max 30 entries, so I count them down here$sorting_array = implode(',', $new);\[/code\]SQL-Ouery for $array_to_sort:\[code\]$result = sql_query("SELECT id, name, helptxt FROM table WHERE id IN ($sorting_array) AND language='english'"); while ($array_to_sort[] = mysql_fetch_array ($result, MYSQL_ASSOC)) {}array_pop($array_to_sort);#deleting the last null entry\[/code\]I could access $array_to_sort as follows to see the content one by one:
(if the lines below don't match the array above, than I mixed it up. However, the lines below is what brings the content)\[code\]echo $array_to_sort[0]["id"];echo $array_to_sort[0]["name"];echo $array_to_sort[0]["helptxt"];\[/code\]But it is sorted by "id" ASC, but I need exactly the sorting as in $sorting_array.I tried some things with:
\[code\]while(list(,$array_to_sort) = each($sorting_array)){$i++;echo $array_to_sort . "<br>";}\[/code\]which only brings the Id's in the correct order, but not the content. Now I'm a bit confused, as I tried so many things, but all ended up in giving me the same results.
Maybe the sql-query could be done in one step, but I didn't brought it to work.All results to my searches just showed how to sort ASC or DESC, but not what I want.
Furthermore I must confess that I'm relative new to PHP and MySQL.
Hopefully some one of you all could bring me back on track.
Many thanks in advance.