如何在 PHP 中比较两个数组并列出差异?

2024-06-19

我正在构建一个表单来执行以下操作:

  • 打印从 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
                 )
  

Question

我怎么能够优雅地组合这两个数组制作一个“更改”数组,这样:

  • 两者具有相同权限的用户将被省略
  • 其余用户拥有所有权限 - 公共、私有和秘密 - 设置为 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() http://php.net/manual/en/function.array-diff.php

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 PHP 中比较两个数组并列出差异? 的相关文章

  • FilesystemIterator 中的顺序

    http php net manual en class filesystemiterator php http php net manual en class filesystemiterator php 我注意到FilesystemIt
  • 将堆分配的指针转换为指向 VLA 的指针是否安全?

    如果我有一个指向代表典型的堆分配空间的指针 行主二维数组 将此指针强制转换为 指向 VLA 的等效指针以方便下标 例子 Assuming m was allocated and initialized something like int
  • MySQL 无法使用 PHP 连接到本地主机上的服务器

    我正在使用 XAMPP 1 7 2 可以通过 cmd 和 SQLYog 连接到 MySQL 但不能以编程方式连接 这段 PHP 代码 conn mysql connect localhost root if conn die Could n
  • PHP:使用 imagemagick 将图像转换为 TIFF

    我正在尝试使用 imagemagick 将图像转换为 tiff 但在尝试写入文件时遇到问题 我收到一条错误消息 无法打开图片 错误 blob c OpenBlob 2584 这是我正在使用的代码 im2 new Imagick image
  • mysql utf8_general_ci 区分大小写

    我有一个 mysql 数据库 我使用 utf8 general ci 不区分大小写 在我的表中 我有一些列 例如 ID 和区分大小写的数据 例如 iSZ6fX 或 AscSc2 为了区分大写和小写 最好只在这些列上设置 utf8 bin 如
  • PHP 数组按月和总和分组

    我有一个 php 数组 如第一张图片所示 我想要的只是按月获取值的总和 如下所示 我知道这对我们大多数人来说可能很容易 但说实话 我找不到可行的方法来实现它 我尝试在谷歌上搜索 但我找到的所有结果都是关于对数据库查询结果进行分组和求和 而对
  • ios-使用 firebase 发送通知

    我正在尝试创建带有通知的应用程序 通知必须从 php 文件发送到 firebase 然后发送到设备 起初 我尝试使用 firebase 控制台发送 效果完美 但是当我尝试使用 php 发送通知时 我遇到了问题 显示已成功发送 但我没有收到任
  • magento 中的自动发票

    我创建了新的自定义产品类型 它扩展了 magento 中的虚拟产品 现在我想阻止在线支付的自动发票 例如 当订单包含至少一种自定义产品类型时 使用 Paypal 所有包含此类产品的订单都必须手动开具发票 我应该如何解决这个问题 最好的方法是
  • PHP PDF生成问题

    我使用 FPDF 在 PHP 中创建 pdf 我使用会话变量将变量在一种表单之间传递到另一种表单 当我提供一个值时 Report php
  • 如何在打字稿中将枚举转换为键、值数组?

    var enums 1 HELLO 2 BYE 3 TATA 我希望能够将其转换为如下所示的数组 number 1 word HELLO number 2 word BYE number 3 word TATA 我看到的所有解决方案都形成一
  • 对模型使用 Zend_Autoloader

    有人知道如何使用 新 Zend Autoloader 来加载模型吗 目前我的配置如下所示 应用程序 ini Autoloader Namespace autoloadernamespaces 0 Sl Bootstrap php Start
  • WooCommerce 订阅 - 获取特定订阅的产品

    有没有办法从 product from subscription 谢谢这个帖子 https stackoverflow com questions 42791096 woocommerce subscriptions get related
  • PHP:将“’”字符从 ISO-8859-1 转换为 UTF-8 时出现问题

    我在使用 PHP 将 ISO 8859 1 数据库内容转换为 UTF 8 时遇到一些问题 我正在运行以下代码来测试 Connect to a latin1 charset database and retrieve Georgia O Ke
  • PHP中如何找出特定进程仍在运行

    我正在编写一个脚本 该脚本构建其他脚本的队列 并应该管理它们的启动 管理器脚本应该知道哪个子进程已经完成 因此它可以启动在队列中等待的其他脚本 我添加了一个 echo 获取每个子进程的进程 ID 所以我有我的子进程进程 ID 现在正在使用系
  • Zend Framework 中数据库驱动路由的教程?

    我正在开发一个需要使用数据库驱动的 MVC 方案的项目 其中控制器和视图的路由通过单个数据库表进行控制 但是 我无法找到任何使用当前版本的框架演示这一点的教程 它们似乎都是在几个版本之前编写的 我想知道是否有人用更新的版本做过类似的事情框架
  • 如何在 PHP 中获取有用的错误消息?

    我经常尝试运行 PHP 脚本 但只是得到一个空白屏幕 无错误信息 只是一个空屏幕 原因可能是一个简单的语法错误 错误的括号 缺少分号 或者函数调用失败 或者完全是其他原因 很难找出哪里出了问题 我最终注释掉了代码 在各处输入 echo 语句
  • 客户端与服务器端图像压缩[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在研究用户可以上传图片的东西 图像大小不受限制 现在我有两个选择使用PHP 服务器端 压缩图像或使用
  • 如何正确转义 CSV 中的双引号?

    我的 CSV 中有这样一行 Samsung U600 24 10000003409 1 10000003427 旁边引用24用于表示英寸 而该引号旁边的引号则关闭该字段 我正在读这行fgetcsv但解析器犯了一个错误 并将该值读取为 Sam
  • 提交ajax表单并停留在同一页面不起作用

    我想将用户的评论存储在我的数据库中 当用户提交时 我不想将他们重定向到新页面 我有以下代码 但它不起作用 我的 HTML 代码
  • XDebug 与 Symfony 和 PhpStorm 不起作用(Ubuntu 安装)

    关于我的系统的事实乌班图15 10PHP 5 6 11交响乐2 7PhpStorm 10调试2 4我真的很难让 xdebug 在 PhpStorm 的 Symfony 项目下工作 我安装了xdebug 在我的 etc php5 apache

随机推荐