如何比较具有相同键但值不同的2个数组的PHP [英] How to compare 2 array with same key but different value PHP

查看:223
本文介绍了如何比较具有相同键但值不同的2个数组的PHP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想问一下比较具有相同键但值不同的2个数组。

I want to ask about compare 2 arrays with same key but different value.

我有1个数组主服务器( arrayMaster )和2个或更多数组数据( arrayData1 arrayData2 ,也许更多)。这些数组数据键将具有 arrayMaster 数据键之一(我已经完成了此操作)。对于我得到的数据示例:

I have 1 array master (arrayMaster) and 2 or more array data (arrayData1, arrayData2, and maybe could be more). These array data key will have exactly one of arrayMaster data key (I've done for this thing). For data example that I get:

arrayMaster = Array( [apple] => 1 [banana] => 2 [choco] => 1 [donut] => 2 [egg] => 1 )
arrayData1 = Array( [apple] => 8 [banana] => 2 [choco] => 1 )
arrayData2 = Array( [donut] => 5 [choco] => 2 [egg] => 3 ) 

(我们可以看到 arrayData1 arrayData2 包含 arrayMaster 键。)

(We can see that arrayData1 and arrayData2 contain a key from arrayMaster key.)

我想比较这些数组并提供一种计算方法。如果在 arrayMaster 处找到 arrayData(n)的数组键,它将执行计算数据,说

These arrays I want to compare and give a calculating method. If the array key at arrayData(n) found at arrayMaster, it will do a calculating data, let said it will sum each other.

所以,结果是:

arrayResult1 = 1+8 (apple have 1 from master, apple have 8 from arrayData1), 2+2, 1+1
arrayResult2 = 2+5 (donut have 2 from master, donut have 5 from arrayData2), 1+2, 1+3

所以我将有2个新数组(或更多,取决于多少arrayData ),其中包含:

So I will have 2 new array (or more, depend on how much arrayData) that contain:

arrayResult1 = ([apple] => 9 [banana] => 4 [choco] => 2);
arrayResult2 = ([donut] => 7 [choco] => 3, [egg] => 4);

有人知道怎么做吗?我已经尝试过 array_intersect ,但是没有用。

Anyone know how to do this? I’"ve tried array_intersect but it didn’t work.

推荐答案

您可以这样编写更简单的东西。

You can write something simpler like this..

function modifyArr(&$arr,$basearray) //<=-- See I am passing & (reference) so your original array will be modified
{
foreach($arr as $k=>$v)
 {
    if(array_search($k,$basearray)!==null)
    {
        $arr[$k]=$basearray[$k]+$arr[$k];
    }
 }
}

modifyArr($arrayData1,$arrayMaster); //<=-- Pass your 1st array
modifyArr($arrayData2,$arrayMaster); //<=-- Pass your 2nd array

演示

这篇关于如何比较具有相同键但值不同的2个数组的PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆