Originally posted by micmac
I didn't include the query...just added a comment for brevity.
It appears to pass a blank value ie. [0] =>
That I'm guessing would be the "unselected" select box - if you gave it a value of "Wibble" my guess would be that you'd see [0]=>Wibble in the results of print_r().
And of course unselected checkboxes don't become part of the form submission; so if any are unselected, the two arrays will end up out of sync.
So I think I've figured out what this form is supposed to look like: several checkbox/selection pairs.
Try explicitly indexing your fields (i.e., use [0], etc. instead of [] when you name them). Then checkbox[0] will correspond to select[0], checkbox[1] will correspond to select[1] and so on; if checkbox[n] isn't present, that means the field wasn't checked, so you can ignore select[n].
Going further into your code and what you do with these fields once you've got them, you might find it even easier to pair them explicitly in the name: call the checkboxes "response[check][0]", "response[check][1]", etc., and the corresponding slsect boxes "response[email][0]", "response[email][1]", etc.. See what print_r() gives for that: you could end up avoiding that whole loop.