从多个复选框更新数据时感到困惑


Confusion in updating data from multiple checkboxes

我在表单上有一个复选框列表,用于更新用户的状态。我想这样做,当在复选框中选择新用户时,它们会入到数据库中,否则,如果未选中某些内容,但它在数据库中处于活动状态,则应将其停用。

我采用了:我取了 2 个数组,首先来自数据库,在那里我得到了哪些用户处于活动状态。其次是提交的表单,检查了哪些值,但不知道我将如何计算要插入哪些数据以及哪些数据应处于非活动状态?

遍历数据库中的那些,如果用户未检查它们,则删除它们。

foreach ($from_db as $in_db) {
    if ( ! in_array($in_db, $from_user) {
        // TODO: remove $in_db from db
    }
}

然后遍历用户检查的那些,如果它们不在数据库中,请添加它们。

foreach ($from_user as $add_to_db) {
    if ( ! in_array($add_to_db, $from_db) {
        // TODO: add $add_to_db to db
    }
}

只需比较两个数组,然后检查另一个数组中的每个项目。您可以将一个变成哈希表,以便在遍历另一个时更快地进行检查。

for each user_from_client {
  if (user_from_client in db) {
    if (!user_from_client.checked)
      db.deactivate(user_from_client);
  } else {
    if (user_from_client.checked)
      db.insert(user_from_client);
  }
}