Ciao,
mi sono trovato anche io alle prese con un problema molto simile. Il fatto sta tutto nel problema che gli elementi basilari di html restituiscono in $_POST solo gli elementi selezionati e mai qualcosa del tipo 0,0,1,1 quando in un array i primi due non sono "checkati" mentre gli altri si.
Ho risolto in un modo un pò "barbaro" e sicuramente anche più pesante facendo due query di update di tutti i riferimenti delle tabelle in questione: in sostanza, metto a 1 tutti i valori selezionati, ma updato anche a 0 tutti gli altri.
So che non è molto elegante e sicuramente ci avrai già pensato sperando di poterlo evitare, ma è quello che mi è venuto in mente ^^