加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何在PHP中比较两个数组和列表差异?

发布时间:2020-12-13 21:34:11 所属栏目:PHP教程 来源:网络整理
导读:我正在构建一个表单来执行以下操作: 打印一个用户和权限表,从MySQL中提取.用户拥有的每个权限都是一个复选框,他们缺少的每个权限都是一个未选中的框. 允许管理员选中和取消选中框以授予或删除权限. 提交表单后,只显示一个确认页面,其中只包含权限将被更改的
我正在构建一个表单来执行以下操作:

>打印一个用户和权限表,从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前端来发送更改.更简单的代码,并且对用户的更改是即时的.突出显示效果可即时提供有关已更改内容的页面反馈.

解决方法

这可能是您正在寻找的:
array_diff()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读