Solved

Comparing 2 arrays

Posted on 2001-06-21
5
136 Views
Last Modified: 2013-12-24
Okay. I have a table with Groups assigned to a user and a table with Groups assigned to an event.

I am storing the info from each table in a one dimensional array. (This I have working).

One array has Group ID's assigned to a user, the other has all Group ID's assigned to an event.  

I want to compare the 2 arrays and see if the Group ID's associated with the user are in the Group ID's from the event.

If they are set a flag on the ones that are the same.

The purpose is to either show or hide info from the user on the display page based on whether they are in a certain group or not.

Can anyone help? Thanks in advance.
0
Comment
Question by:Zoo
  • 3
  • 2
5 Comments
 
LVL 4

Expert Comment

by:CF_Spike
Comment Utility
How exactly are the arrays organised?

what does the array index represent and what does the array data represent?

i.e. Is the groupID the array index number or is it the data for that index in the array?

Spike
0
 

Author Comment

by:Zoo
Comment Utility
the arrays are filled with data (numbers to be exact), as in:

Array 1 - 1, 23, 56, 89 , 78

Array 2 - 1, 2, 3, 56, 78, 98

The numbers are unique ID's of groups.

I want to compare these and where they are the same print to the screen, if they are not the same do not print.

So in the case above print out the events that correspond to numbers 1, 56, and 78.


Here is my code:

Array 1:

<CFQUERY DATASOURCE="#request.MainDSN#" NAME="qryGetGroups">
    SELECT  group_id
    FROM GroupTracking
    WHERE Event_ID = #attributes.Event_ID#
</CFQUERY>

<CFSET arrGetGroups = ArrayNew(1)>
<CFSET numCount = 1>
<CFOUTPUT QUERY="qryGetGroups">
<CFSET Variables.arrGetGroups[#Variables.numCount#] = #group_id#>
<CFSET Variables.numCount = Variables.numCount + 1>
</CFOUTPUT>


Array 2:

<CFQUERY DATASOURCE="#request.MainDSN#" NAME="qryUserGroups">
SELECT      gm.group_id, gm.user_id, u.user_lastname, g.group_name
FROM GROUPMEMBERSHIP gm, USERS u, GROUPS g
WHERE u.user_id = #session.numUserID#
AND gm.user_id = u.user_id
AND gm.group_id = g.group_id
</CFQUERY>


<CFSET arrGetUsersGroups = ArrayNew(1)>
<CFSET numCount = 1>
<CFOUTPUT QUERY="qryUserGroups">
<CFSET Variables.arrGetUsersGroups[#Variables.numCount#] = #group_id#>
<CFSET Variables.numCount = Variables.numCount + 1>
</CFOUTPUT>
0
 
LVL 4

Expert Comment

by:CF_Spike
Comment Utility
This should work:

<CFSET listUsersGroups = ArrayToList(variables.arrGetUsersGroups)>
<CFOUTPUT>
<CFLOOP From="1" TO="#ArrayLen(Variables.arrGetGroups)#" Index="i">
<CFSET
<CFIF ListFind(listUsersGroups,Variables.arrGetGroups[i]))>
#Variables.arrGetGroups[i]#
</CFIF>
</CFLOOP>
</CFOUTPUT>

You would probably want to do something other than just print out the value, but hopefully you get the idea.

Spike
0
 
LVL 4

Accepted Solution

by:
CF_Spike earned 100 total points
Comment Utility
Better remove that unclosed cfset just after the opening cfloop tag before you try to run the code.
0
 

Author Comment

by:Zoo
Comment Utility
That worked great. Thanks!!
0

Featured Post

Complete Microsoft Windows PC® & Mac Backup

Backup and recovery solutions to protect all your PCs & Mac– on-premises or in remote locations. Acronis backs up entire PC or Mac with patented reliable disk imaging technology and you will be able to restore workstations to a new, dissimilar hardware in minutes.

Join & Write a Comment

Most ColdFusion developers get confused between the CFSet, Duplicate, and Structcopy methods of copying a Structure, especially which one to use when. This Article will explain the differences in the approaches with examples; therefore, after readin…
One of the typical problems I have experienced is when you have to move a web server from one hosting site to another. You normally prepare all on the new host, transfer the site, change DNS and cross your fingers hoping all will be ok on new server…
This video discusses moving either the default database or any database to a new volume.
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now