Jump to content

Compare Arrays


bschultz

Recommended Posts

I need to compare several arrays...to narrow down a bunch of mysql selects.

 

I can't figure out which of the array_diff, array_unique, array_merge options there are.

 

I need to get an array of umpires (baseball), then compare that to the array of umpires that can work a given level, then compare that to the array of umpires that can work at that school, and finally compare that to the array of umpires who have asked for the day off.

 

In the code below, all of the selects work...the echo's that are commented out printed out what I expected them to.

 

I'm having a problem with the array comparisons at the end of this code:

 

<?php
//connect to database
$dbc = mysql_pconnect($host, $username, $password);  
mysql_select_db($db,$dbc);  


//get info of game
$sql = "SELECT sport,home,day FROM games WHERE `game_id` = $_GET[game]"; 
$rs = mysql_query($sql,$dbc);  
while($row = mysql_fetch_array($rs))
            {
              $game_array = $row['sport'];
	      $home_team_array = $row['home'];
		  $game_day_array = $row['day'];
		}


//list of all umpires in association
$sql = "SELECT ump_id FROM ump_names WHERE '$_SESSION[association_id]' = `association_id`"; 
$rs = mysql_query($sql,$dbc);  						 
while($row = mysql_fetch_array($rs))
            {
                        $name_array[] = $row['ump_id'];
//						 echo "<br /><br />All Ump ID's Array = "; 
//						 foreach($name_array as $name_array_final) {
//                         echo $name_array_final . "<br />";
//                         }
            }


//get bad schools list
$sql = "SELECT ump_id FROM bad_school WHERE '$_SESSION[association_id]' = `association_id` AND `school` = '$home_team_array' and `sport` = '$game_array'"; 
$rs = mysql_query($sql,$dbc);  
while($row = mysql_fetch_array($rs))
            {
                        $bad_school_array[] = $row['ump_id'];
//						 echo "<br /><br />Bad School Array = "; 
//						 foreach($bad_school_array as $bad_school_array_final) {
//                         echo $bad_school_array_final . ", ";
//                         }

            }
//get official list at this game's level
$sql = "SELECT ump_id FROM ump_names WHERE `association_id` = '$_SESSION[association_id]' AND `$game_array` = '1'"; 
$rs = mysql_query($sql,$dbc);  
while($row = mysql_fetch_array($rs))
            {
                        $official_level_array[] = $row['ump_id'];

		//						 echo "<br /><br />Officials that can work this level of game = "; 
//						 foreach($official_level_array as $official_level_array_final) {
//                         echo $official_level_array_final . ", ";
//                         }

            }

//get vacation list
$sql = "SELECT ump_id FROM days_off WHERE '$_SESSION[association_id]' = `association_id` AND `day` = '$game_day_array'"; 
$rs = mysql_query($sql,$dbc);  
while($row = mysql_fetch_array($rs))
            {
                        $days_off_array[] = $row['ump_id'];
//						 echo "<br /><br />Officials that are on vacation this day = "; 
//						 foreach($days_off_array as $days_off_array_final) {
//                         echo $days_off_array_final . ", ";
//                         }
            }			



//$first_step = array_merge($official_level_array, $name_array);
$first_step = array_merge($official_level_array, $name_array);
$first_step_part_2=array_unique($first_step); 

//$second_step = array_merge($bad_school_array, $first_step);
$second_step = array_merge($bad_school_array, $first_step_part_2);
$second_step_part_2=array_unique($second_step); 

//$third_step = array_merge($days_off_array, $second_step);
$third_step = array_merge($days_off_array, $second_step_part_2);
$third_step_part_2=array_unique($third_step); 

echo "These umpires are available for this game:<br />";
foreach ($third_step as $iamavailable) {
echo "$iamavailable<br />";

}

?>

 

This prints out:

 

2

1

2

4

5

6

10

14

15

3

7

8

9

11

12

13

16

17

 

It should only print out 4, 5, 6, 10, 14, 15.

 

What I want to do is:  compare $official_level_array and $name_array...only keep those that are in $official_level_array.

 

Then, compare that result with $bad_school_array...removing those in the $bad_school_array...and keeping the ones that are left.

 

Then, compare that result, with $days_off_array...removing those in the $days_off_array...and keeping the ones that are left.

 

Print out what's left...

 

 

Where am I going wrong?

 

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.