Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 比较更改日志的两个数组的值_Php_Arrays - Fatal编程技术网

Php 比较更改日志的两个数组的值

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]` `

我从谷歌搜索并尝试了很多解决方案,比如array_diff、array_intersect和array_map,但不知何故,我无法得到我想要的结果

让我分享一些例子和我想要的

它位于“编辑用户”页面上:

A节: 以前管理员为此用户选择了$regions=[5,6,2] 现在admin选择$regions=[2,6,7]

我想发送一封电子邮件,告知您的地区列表中有变化,以前的地区,如果有变化,这些是新的地区

B节: 如果没有如下更改,则没有电子邮件

`$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;你检查过答案是否解决了你的问题吗?我投了赞成票。这是有道理的。让我试试这个解决办法