Re: [PHP] combining 2 arrays
array_merge() function? If your db is MySQL, look at this thread, Google being your friend: http://lists.mysql.com/mysql/204616 Cheers - Milesx On 10/16/07, Ladislav Andel [EMAIL PROTECTED] wrote: Hi list! I read data from 2 databases and for the purpose of displaying the information at my web interface as one piece I need to combine the data into one array first.. Here is my problem: Firstly, it reads from first DB and get this array: (it's a sum of server names in table) arrayDB1 = array(array('8', 'SER'), array('5','Asterisk')) When finished then it starts reading from second DB where I would get arrayDB2 = array(array('6', 'XIP'), array('4','Asterisk')) Is there any function where I would get result = array(array('8', 'SER'), array('9','Asterisk'), array('6','XIP')) Probably, it would be best to add number of Asterisk while cycling through data of second DB. The problem could be when databases have thousands of rows in each DB. I'm just asking in case you know a better approach. Thank you, Lada -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] combining 2 arrays
Miles Thompson wrote: array_merge() function? If your db is MySQL, look at this thread, Google being your friend: http://lists.mysql.com/mysql/204616 Thanks for quick reply. Array_merge doesn't do what I want. And also those databases are at different locations.. Not the same machines. I found something here http://www.linux.com/articles/52390 but not sure if it is what I want but will read up. Thanks, Lada Cheers - Milesx On 10/16/07, Ladislav Andel [EMAIL PROTECTED] wrote: Hi list! I read data from 2 databases and for the purpose of displaying the information at my web interface as one piece I need to combine the data into one array first.. Here is my problem: Firstly, it reads from first DB and get this array: (it's a sum of server names in table) arrayDB1 = array(array('8', 'SER'), array('5','Asterisk')) When finished then it starts reading from second DB where I would get arrayDB2 = array(array('6', 'XIP'), array('4','Asterisk')) Is there any function where I would get result = array(array('8', 'SER'), array('9','Asterisk'), array('6','XIP')) Probably, it would be best to add number of Asterisk while cycling through data of second DB. The problem could be when databases have thousands of rows in each DB. I'm just asking in case you know a better approach. Thank you, Lada -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] combining 2 arrays
Ladislav Andel wrote: Miles Thompson wrote: array_merge() function? If your db is MySQL, look at this thread, Google being your friend: http://lists.mysql.com/mysql/204616 Thanks for quick reply. Array_merge doesn't do what I want. And also those databases are at different locations.. Not the same machines. I found something here http://www.linux.com/articles/52390 but not sure if it is what I want but will read up. This is not what I'm looking for either.. (replicating). Data at each database are mostly different. Thanks, Lada Cheers - Milesx On 10/16/07, Ladislav Andel [EMAIL PROTECTED] wrote: Hi list! I read data from 2 databases and for the purpose of displaying the information at my web interface as one piece I need to combine the data into one array first.. Here is my problem: Firstly, it reads from first DB and get this array: (it's a sum of server names in table) arrayDB1 = array(array('8', 'SER'), array('5','Asterisk')) When finished then it starts reading from second DB where I would get arrayDB2 = array(array('6', 'XIP'), array('4','Asterisk')) Is there any function where I would get result = array(array('8', 'SER'), array('9','Asterisk'), array('6','XIP')) Probably, it would be best to add number of Asterisk while cycling through data of second DB. The problem could be when databases have thousands of rows in each DB. I'm just asking in case you know a better approach. Thank you, Lada -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] combining 2 arrays
On Tue, 2007-10-16 at 16:42 +0200, Ladislav Andel wrote: arrayDB1 = array(array('8', 'SER'), array('5','Asterisk')) When finished then it starts reading from second DB where I would get arrayDB2 = array(array('6', 'XIP'), array('4','Asterisk')) Is there any function where I would get result = array(array('8', 'SER'), array('9','Asterisk'), array('6','XIP')) You could try something like: $result[] = $arrayDB1; $result[] .= $arrayDB2; If I understand the question correctly. --Paul All Email originating from UWC is covered by disclaimer http://www.uwc.ac.za/portal/uwc2006/content/mail_disclaimer/index.htm -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] combining 2 arrays
On Tue, 16 Oct 2007, Paul Scott wrote: You could try something like: $result[] = $arrayDB1; $result[] .= $arrayDB2; That .= doesn't do what you think it does when used with arrays. -- Greg Donald Cyberfusion Consulting http://cyberfusionconsulting.com/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] combining 2 arrays
On 10/16/07, Greg Donald [EMAIL PROTECTED] wrote: On Tue, 16 Oct 2007, Paul Scott wrote: You could try something like: $result[] = $arrayDB1; $result[] .= $arrayDB2; That .= doesn't do what you think it does when used with arrays. Take this same concept (of creating a new array) and see if you can use array_merge. I know you mentioned earlier that it wasn't what you were looking for... however, maybe the combination will work??? Good luck, ~Philip
Re: [PHP] combining 2 arrays
On 10/16/07, Ladislav Andel [EMAIL PROTECTED] wrote: Hi list! I read data from 2 databases and for the purpose of displaying the information at my web interface as one piece I need to combine the data into one array first.. Here is my problem: Firstly, it reads from first DB and get this array: (it's a sum of server names in table) arrayDB1 = array(array('8', 'SER'), array('5','Asterisk')) When finished then it starts reading from second DB where I would get arrayDB2 = array(array('6', 'XIP'), array('4','Asterisk')) Is there any function where I would get result = array(array('8', 'SER'), array('9','Asterisk'), array('6','XIP')) If you have to have data manipulation when combining the arrays (such as adding the two separate values for Asterisk as per your example), then there isn't a pre-defined function to do what you want. I'd change the arrangement of your arrays a bit, so that they looked something like the following (very untested): $arrDB1 = array('Asterisk' = 5, 'SER' = 8); $arrDB2 = array('Asterisk' = 4, 'SER' = 6); function addArrays($arr1, $arr2) { $res = array(); if (is_array($arr1) and is_array($arr2)) { $keys = array_merge(array_keys($arr1), array_keys($arr2)); foreach ($keys as $key) { $res[$key] = $arr1[$key] + $arr2[$key]; //May have to check isset of each $arrX[$key] before addition, not sure } } else { //Do appropriate error handling here... } return $res; } Probably, it would be best to add number of Asterisk while cycling through data of second DB. The problem could be when databases have thousands of rows in each DB. I'm just asking in case you know a better approach. Thank you, Lada -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] combining 2 arrays
nope, merge is not doing what I want and also using FEDERATED http://localhost/phpmyadmin/server_engines.php?engine=FEDERATEDtoken=d18a0e0de85e891b3558f84f6585994f engine in mysql I think is not the simplest way to go or even not appropriate. Anyhow, I did it an ugly way ( tablearray follows DB queries with the same fields; one row of a query is e.g. count=5, server_name=Asterisk ) Variable dbs is an array with MySQL URIs. Lada function get_data($dbs, $tablearray, $query) { $id = 0; $result = array(); $records = 0; $db_select = 0; for ($c = 0; $c $len; $c++) { $db = DB::Connect( $dbs[$db_select] ); if (PEAR::isError($db)) { echo Can't connect to DB.$db_select.br; } else { $res = $db-query($query, array() ); while( $res-fetchInto( $row ) ) { $cols = count($row); if ($db_select 0) { for ($i=0; $i $records; $i++) { if (in_array($row[1],$result[$i])) { $result[$i][$tablearray[0]] = $row[0] + $result[$i][$tablearray[0]]; break; } else { if ([EMAIL PROTECTED]) { @$entered = True; for ($b=0; $b$cols; $b++) { $result[$id][$tablearray[$b]] = $row[$b]; } $id++; } } } @$entered = False; } else { for ($i=0; $i$cols; $i++) { $result[$id][$tablearray[$i]] = $row[$i]; } $id++; } } } $db_select++; $records = count($result); return $result; } Philip Thompson wrote: On 10/16/07, Greg Donald [EMAIL PROTECTED] wrote: On Tue, 16 Oct 2007, Paul Scott wrote: You could try something like: $result[] = $arrayDB1; $result[] .= $arrayDB2; That .= doesn't do what you think it does when used with arrays. Take this same concept (of creating a new array) and see if you can use array_merge. I know you mentioned earlier that it wasn't what you were looking for... however, maybe the combination will work??? Good luck, ~Philip -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] combining 2 arrays
Thank you very much! It's exactly the code I was looking for! Lada PS: my previous ungly code is half long now :) James Ausmus wrote: On 10/16/07, Ladislav Andel [EMAIL PROTECTED] wrote: Hi list! I read data from 2 databases and for the purpose of displaying the information at my web interface as one piece I need to combine the data into one array first.. Here is my problem: Firstly, it reads from first DB and get this array: (it's a sum of server names in table) arrayDB1 = array(array('8', 'SER'), array('5','Asterisk')) When finished then it starts reading from second DB where I would get arrayDB2 = array(array('6', 'XIP'), array('4','Asterisk')) Is there any function where I would get result = array(array('8', 'SER'), array('9','Asterisk'), array('6','XIP')) If you have to have data manipulation when combining the arrays (such as adding the two separate values for Asterisk as per your example), then there isn't a pre-defined function to do what you want. I'd change the arrangement of your arrays a bit, so that they looked something like the following (very untested): $arrDB1 = array('Asterisk' = 5, 'SER' = 8); $arrDB2 = array('Asterisk' = 4, 'SER' = 6); function addArrays($arr1, $arr2) { $res = array(); if (is_array($arr1) and is_array($arr2)) { $keys = array_merge(array_keys($arr1), array_keys($arr2)); foreach ($keys as $key) { $res[$key] = $arr1[$key] + $arr2[$key]; //May have to check isset of each $arrX[$key] before addition, not sure } } else { //Do appropriate error handling here... } return $res; } Probably, it would be best to add number of Asterisk while cycling through data of second DB. The problem could be when databases have thousands of rows in each DB. I'm just asking in case you know a better approach. Thank you, Lada -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP] combining 2 arrays
-Original Message- From: Ladislav Andel [mailto:[EMAIL PROTECTED] Sent: Tuesday, October 16, 2007 1:05 PM To: James Ausmus; PHP List Subject: Re: [PHP] combining 2 arrays Thank you very much! It's exactly the code I was looking for! Lada PS: my previous ungly code is half long now :) James Ausmus wrote: On 10/16/07, Ladislav Andel [EMAIL PROTECTED] wrote: Hi list! I read data from 2 databases and for the purpose of displaying the information at my web interface as one piece I need to combine the data into one array first.. Here is my problem: Firstly, it reads from first DB and get this array: (it's a sum of server names in table) arrayDB1 = array(array('8', 'SER'), array('5','Asterisk')) When finished then it starts reading from second DB where I would get arrayDB2 = array(array('6', 'XIP'), array('4','Asterisk')) Is there any function where I would get result = array(array('8', 'SER'), array('9','Asterisk'), array('6','XIP')) If you have to have data manipulation when combining the arrays (such as adding the two separate values for Asterisk as per your example), then there isn't a pre-defined function to do what you want. I'd change the arrangement of your arrays a bit, so that they looked something like the following (very untested): $arrDB1 = array('Asterisk' = 5, 'SER' = 8); $arrDB2 = array('Asterisk' = 4, 'SER' = 6); function addArrays($arr1, $arr2) { $res = array(); if (is_array($arr1) and is_array($arr2)) { $keys = array_merge(array_keys($arr1), array_keys($arr2)); foreach ($keys as $key) { $res[$key] = $arr1[$key] + $arr2[$key]; //May have to check isset of each $arrX[$key] before addition, not sure } } else { //Do appropriate error handling here... } return $res; } Probably, it would be best to add number of Asterisk while cycling through data of second DB. The problem could be when databases have thousands of rows in each DB. I'm just asking in case you know a better approach. Thank you, Lada Wouldn't this work? http://us2.php.net/manual/ro/function.array-merge.php http://us2.php.net/manual/ro/function.array-merge-recursive.php Also, you don't need to do (and shouldn't do): $arr1[$key] Just make it $arr1[$key] No marks. The quotes are a waste of time and will slow down your script if you have many rows. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] combining 2 arrays
Array merge won't work as he needs to add the numerical values involved, not just merge the arrays - there are overlap on the text values, and any overlap needs to result in a val1 + val2. -James On 10/16/07, Daevid Vincent [EMAIL PROTECTED] wrote: -Original Message- From: Ladislav Andel [mailto:[EMAIL PROTECTED] Sent: Tuesday, October 16, 2007 1:05 PM To: James Ausmus; PHP List Subject: Re: [PHP] combining 2 arrays Thank you very much! It's exactly the code I was looking for! Lada PS: my previous ungly code is half long now :) James Ausmus wrote: On 10/16/07, Ladislav Andel [EMAIL PROTECTED] wrote: Hi list! I read data from 2 databases and for the purpose of displaying the information at my web interface as one piece I need to combine the data into one array first.. Here is my problem: Firstly, it reads from first DB and get this array: (it's a sum of server names in table) arrayDB1 = array(array('8', 'SER'), array('5','Asterisk')) When finished then it starts reading from second DB where I would get arrayDB2 = array(array('6', 'XIP'), array('4','Asterisk')) Is there any function where I would get result = array(array('8', 'SER'), array('9','Asterisk'), array('6','XIP')) If you have to have data manipulation when combining the arrays (such as adding the two separate values for Asterisk as per your example), then there isn't a pre-defined function to do what you want. I'd change the arrangement of your arrays a bit, so that they looked something like the following (very untested): $arrDB1 = array('Asterisk' = 5, 'SER' = 8); $arrDB2 = array('Asterisk' = 4, 'SER' = 6); function addArrays($arr1, $arr2) { $res = array(); if (is_array($arr1) and is_array($arr2)) { $keys = array_merge(array_keys($arr1), array_keys($arr2)); foreach ($keys as $key) { $res[$key] = $arr1[$key] + $arr2[$key]; //May have to check isset of each $arrX[$key] before addition, not sure } } else { //Do appropriate error handling here... } return $res; } Probably, it would be best to add number of Asterisk while cycling through data of second DB. The problem could be when databases have thousands of rows in each DB. I'm just asking in case you know a better approach. Thank you, Lada Wouldn't this work? http://us2.php.net/manual/ro/function.array-merge.php http://us2.php.net/manual/ro/function.array-merge-recursive.php Also, you don't need to do (and shouldn't do): $arr1[$key] Just make it $arr1[$key] No marks. The quotes are a waste of time and will slow down your script if you have many rows. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php