Hello Jochem,
I tried what you suggested and it work just perfect as long as i made
the array by hand. But when I try to generate the array using the
database I can not get it to work. How would I create the array $arrX
from the mysql database.
I have tried this but it does not work properly
while (!$recordSet->EOF) {
$arrX = $recordSet->fields['user_id'] => $recordSet->fields['field_value'];
$recordSet->MoveNext();
$arrX = array(
"6" => "English||Spanish",
"8" => "English||Portuguese||Finnish",
"2" => "English"
);
// define a new array & loop thru $arrX like so:
$arrTmp = array();
foreach ($arrX as $langs) {
$arrTmp = array_merge($arrTmp, explode('||',$langs));
}
// now loop thru the $arrTmp array (and for each item loop the original
//$arrX array) as follows:
foreach ($arrTmp as $Tmp) {
$arrFinal[$Tmp] = array();
foreach($arrX as $uid => $langs) {
// is the lang in this users lang list
if (stristr($langs, $Tmp)) {
// yes it is! add the user to this lang
$arrFinal[$Tmp][] = $uid;
}
}
}
// now dump the results to the screen:
echo ("users lang\n");
foreach ($arrFinal as $lang => $users) {
echo implode(',',$users)." $lang\n";
}
Monday, February 2, 2004, 12:47:25 PM, you wrote:
JM> // given an array in the form:
JM> $arrX = array(
'' =>> 'English||Spanish'
'8' =>> 'English||Portuguese||Finnish'
JM> // ...etc...
JM> );
JM> // define a new array & loop thru $arrX like so:
JM> $arrTmp = array()
JM> foreach ($arrX as $langs) {
JM> $arrTmp = array_merge($arrTmp, explode('||',$langs));
JM> }
JM> // now loop thru the $arrTmp array (and for each item loop the original
JM> $arrX array) as follows:
JM> foreach ($arrTmp as $Tmp) {
JM> $arrFinal[$Tmp] = array();
JM> foreach($arrX as $uid => $langs) {
JM> // is the lang in this users lang list
JM> if (stristr($langs, $Tmp)) {
JM> // yes it is! add the user to this lang
JM> $arrFinal[$Tmp][] = $uid;
JM> }
JM> }
JM> }
JM> // now dump the results to the screen:
JM> echo ("userslang\n");
JM> foreach ($arrFinal as $lang => $users) {
JM> echo implode(',',$users)." $lang\n";
JM> }
JM> ---
JM> that was off the top of my head; there is probably a better way of doing
JM> it but hopefully it points you in the right direction.
JM> if you don't understand this code I suggest testing it out (there may be
JM> typos!!) - these are basic manipulations and a developing proper
JM> understanding of them is very important to being able to write good code
JM> - I speak from experience when I say the only real way to understand it
JM> is to play with it.
JM> have fun.
JM> Richard Kurth wrote:
>> I am pulling data from a database that list the Language a person
>> speaks and the id number. It is in a format like this.
>>
>> user_id field_value
>> 6 English||Spanish
>> 2 English
>> 8 English||Portuguese||Finnish
>> 5 English||Japanese||German
>> 3 English
>> 1 English
>> 9 German
>>
>> each time it looks at a new record it list all the languages that that
>> person speaks with a double pipe in between each language.
>>
>> What I need to do is find all the unique languages so I can generate a
>> list of languages that do not have any repeats in it with each users
>> id number that speaks that language. so the
>> list above
>> would be
>> 6,2,8,5,3,1 English
>> 8 Portuguese
>> 8 Finnish
>> 5 Japanese
>> 5,9 German
>> 6 Spanish
>>
>> Using the script below (I am using ADODB for a database layer) I am
>> able to pull the data into an array of both fields so it gives me an
>> array that looks like this
>> Array ( [6] => English||Portuguese||Finnish [2] =>
>> English||Portuguese||German [8] => English [7] => English ) )
>>
>> But I can not figure out how to split it up so there is a list like I
>> have above.
>> I know I need to use explode, array_merge and array_unique but I am
>> not sure how to set it up so it will work correctly
>>
>> $sql = "SELECT * FROM default_UserDBElements WHERE field_name = 'Languages'";
>> $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
>> $recordSet = $conn->Execute($sql);
>> if (!$recordSet)
>> print $conn->ErrorMsg();
>> else
>> while (!$recordSet->EOF) {
>> $array[$recordSet->fields['user_id']] =
>> $recordSet->fields['field_value'];
>> $recordSet->MoveNext();
>> }
>>
>> print_r($array);
>>
--
Best regards,
Richard mailto:[EMAIL PROTECTED]
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php