我正在构建一个表单来执行以下操作:
>打印一个用户和权限表,从MySQL中提取.用户拥有的每个权限都是一个复选框,他们缺少的每个权限都是一个未选中的框.
>允许管理员选中和取消选中框以授予或删除权限.
>提交表单后,只显示一个确认页面,其中只包含权限将被更改的用户,突出显示特定的更改.
>确认更改后,相应地修改数据库.
为此,我创建了两个用户权限数组:一个根据数据库显示的内容,另一个根据表单显示的内容.
如果用户在MySQL中缺少权限,则它将显示为0.如果他们在表单提交中缺少权限,则它将不存在.
以下是两个简单的数组示例:
数据库数组
[User1] => Array ([public] => 1
[private] => 1
[secret] => 1
)
[User2] => Array ([public] => 1
[private] => 0
[secret] => 0
)
表单提交数组(从User1撤消“秘密”并将其提供给User2)
[User1] => Array ([public] => 1
[private] => 1
)
[User2] => Array ([public] => 1
[secret] => 1
)
题
我如何优雅地组合这两个数组来创建一个“更改”数组,这样:
>省略两者具有相同权限的用户
>剩余用户将所有权限(public,private和secret)设置为0或1.
>如果表单提交数组中缺少每个权限,则为0;如果表单提交数组中,则为1
例如,结合上述内容将给出:
[User1] => Array ([public] => 1
[private] => 1
[secret] => 0
)
[User2] => Array ([public] => 1
[private] => 0
[secret] => 1
)
到目前为止的尝试
>作为第一步,我尝试使用array_merge(),其中第二个列出了表单数组,认为它会覆盖它们不同的数据库数组.相反,它删除了不同的元素.
>我已经尝试设置foreach()语句来比较两个数组,但它变得复杂了,我认为必须有一个更简单的方法
UPDATE
呼!一个新的答案引起了我对这个老问题的关注.我得到了这个工作,但后来我废弃了这个疯狂的代码 – 它太复杂了回去工作.相反,我编写了一个PHP后端脚本来一次更改一个权限,然后写了一个AJAX前端来发送更改.更简单的代码,并且对用户的更改是即时的.突出显示效果可即时提供有关已更改内容的页面反馈.