我在表单上有一个复选框列表,用于更新用户的状态。我想这样做,当在复选框中选中新用户时,它们会被插入数据库中,否则,如果未选中某些内容,但它在数据库中处于活动状态,则应将其停用。
我采用了: 我从数据库中获取了 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);
}
}