如何比较具有相同键但值不同的2个数组的PHP [英] How to compare 2 array with same key but different value 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屋!