Casilla de verificación de bucle en PHP mientras se publica en la base de datos

Estoy construyendo en este momento un sistema de logros que funciona sobre la base de casillas de verificación (ya que no está relacionado con publicaciones) Sin embargo, me topé con un problema y no puedo abarcarlo, ya que no soy tan útil con los bucles y Arrays.

enter image description here

De acuerdo, entonces hice un grupo de casillas de verificación, que se publican en esta página y se rellenan de forma adecuada, como se ve en el siguiente código que me ayuda a completar esa parte de la página.

function MakeProfessionlist(){ $result = LoadListProffesion(); $i = 0; echo ''; while($row = mysqli_fetch_array($result)){ $i++; if(($i % 2) == 0){ echo ""; echo ""; }else{ echo ""; echo ""; } } echo '
"; echo ""; echo "".$row["AchievementName"]."
"; echo "" ; echo "".$row["AchievementName"]."
'; }

Como ve, bash disparar a través de 2 variables, a saber, AchievementId, y el valor de IsChecked (puede ser 0 o 1). El problema ocurre cuando voy a guardar esta información. Configuré una tabla dentro de la base de datos que actúa como mediador (The Achievement_User, con solo 3 entradas, que son UserId, AchievementId y el valor IsChecked)

Mi comienzo fue que realizo todos los logros que se obtienen aquí con los AchievementId’s que se publican junto con la checkbox a través del código que aparece a continuación.

 if(isset($_POST['AchievementSaveData'])) { // print_r($_POST); $checkbox = isset($_POST['IsChecked']) ? $_POST['IsChecked'] : array(); $Achievement = isset($_POST['AchievementId']) ? $_POST['AchievementId'] : array(); foreach (array_combine($checkbox, $Achievement) as $IsChecked => $AchievementId){ $sql="SELECT * FROM Achievement_User WHERE UserId='".$UserId."' AND AchievementId ='".$AchievementId."'" ; $result=mysqli_query($sql); $count=mysqli_num_rows($result); if ($count==1){ echo 'Update datarow with UserID '.$UserId.', AchievementId '. $AchievementId.' and with a value of '.$IsChecked;' 
'; } else{ echo 'Create datarow with UserID '.$UserId.', AchievementId '. $AchievementId.' and with a value of '.$IsChecked.'
'; } } }

Ahora el problema radica en el hecho de que cuando marque una checkbox, parece que la matriz se incrementa. En lugar de las 40 entradas que hace (que es la cantidad de AchievementId’s publicados, y cuando se marca todo es el valor predeterminado) crea un espacio de matriz adicional para cada valor verificado, lo que hace que mi comparación sea inútil, porque me da un error que el las matrices se pueden combinar.

¿Hay alguna manera de que pueda trabajar a su alrededor? ¿Qué haría que mi variedad de AchievementId coincida con mi valor de IsChecked?

Editar: Al lado de eso, todo el ciclo foreach ya no parece funcionar cuando intenté fusionar las matrices (incluso si coinciden en valores). Así que mi pensamiento aquí es tal vez ¿hay alguna manera en que puedo publicar la matriz de IsChecked con el valor del AchievementId adjuntado? Si eso es así, ¿cómo podría resolver esto?

Solutions Collecting From Web of "Casilla de verificación de bucle en PHP mientras se publica en la base de datos"