Так как я не уверен, какую javascript платформу вы используете, если таковая имеется, вот пример того, что вы можете сделать.
Если вы планируете отправлять данные на сервер при переключении изменен, вы устанавливаете флажок onchange и вам не нужно, чтобы он был массивом. И отправьте процесс, который вы хотите выполнить, вместе со значением разрешения, которое нужно изменить.
var _checks = document.querySelectorAll("input[name=permchecked]");
_checks.forEach(function(el){
el.addEventListener("change",function(){
var field_data = {
"process" : (this.checked) ? "add" : "delete",
"permission": this.value
};
//using ajax, submit field_data to the server
});
});
PHP
В вашем PHP, затем проверьте процесс:
if(isset($_POST['process'])){
if($_POST['process'] == "delete"){
//delete from database where that permission equals the value passed plus that user. Even if the permission doesn't exist in the database already, still just run the single delete query. No reason to add an additional query to check that it exists.
}
elseif($_POST['process'] == "add"){
//add that permission to the database
}
}