Php 比较更改日志的两个数组的值
我从谷歌搜索并尝试了很多解决方案,比如array_diff、array_intersect和array_map,但不知何故,我无法得到我想要的结果 让我分享一些例子和我想要的 它位于“编辑用户”页面上: A节: 以前管理员为此用户选择了$regions=[5,6,2] 现在admin选择$regions=[2,6,7] 我想发送一封电子邮件,告知您的地区列表中有变化,以前的地区,如果有变化,这些是新的地区 B节: 如果没有如下更改,则没有电子邮件Php 比较更改日志的两个数组的值,php,arrays,Php,Arrays,我从谷歌搜索并尝试了很多解决方案,比如array_diff、array_intersect和array_map,但不知何故,我无法得到我想要的结果 让我分享一些例子和我想要的 它位于“编辑用户”页面上: A节: 以前管理员为此用户选择了$regions=[5,6,2] 现在admin选择$regions=[2,6,7] 我想发送一封电子邮件,告知您的地区列表中有变化,以前的地区,如果有变化,这些是新的地区 B节: 如果没有如下更改,则没有电子邮件 `$regions_old=[5,6,2]` `
`$regions_old=[5,6,2]`
`$regions_new=[2,6,5]`
C节:
$regions_old=[5]
$regions_new=[2,6,5]
D节:
$regions_old=[2,5,6]
$regions_new=[2]
如果有任何更改,我需要两个包含旧区域和新区域列表的数组。我尝试计数两个数组,但在这种情况下,B部分失败
如果您有两个数组$regions\u old和$regions\u new,您可以通过创建两个变量来获得所需的帮助,这两个变量利用array\u diff来确定数组中的更改 更具体地说: $regions\u added=array\u diff$regions\u new,$regions\u old $regions\u removed=array\u diff$regions\u old$regions\u new 以下场景可用于测试上述逻辑: 案例1:区域相同 $regions_old=[5,6,2] $regions_new=[2,6,5] 在本例中,添加的$regions_和删除的$regions_都将返回空数组,因此没有进行任何更改 案例2:已添加区域 $regions_old=[5] $regions_new=[2,6,5] 添加的$regions_将返回一个包含两个元素[2,6]的数组,而删除的$regions_将返回一个空数组。这意味着,用户在已经存在的$regions\u old中添加了两个额外的区域 案例3:区域已被删除 $regions_old=[2,5,6] $regions_new=[2] 添加的$regions_将返回一个空数组,而删除的$regions_将返回一个包含两个元素的数组[5,6]。这意味着,用户从已经存在的$regions\u old中删除了两个区域 案例4:区域已完全改变 $regions_old=[2,5,6] $regions_new=[4,1,3]
$regions_added将返回一个包含三个元素[4,1,3]的数组,$regions_removed将返回一个包含三个元素[2,5,6]的数组。这意味着用户完全更改了区域。我不明白为什么array_diff不适合您想要实现的目标。它不返回值2和6,并且在c部分失败。当我这样做时,打印\u rarray\u diff$regions\u old$regions\u new;你检查过答案是否解决了你的问题吗?我投了赞成票。这是有道理的。让我试试这个解决办法