gpt4 book ai didi

php - 两个数组值之间的差量

转载 作者:搜寻专家 更新时间:2023-10-31 21:00:35 25 4
gpt4 key购买 nike

我有两个数组,其中包含产品代码作为键和数量作为值(“代码”=> 数量)。我想生成一个数组,其中包含旧数组 (array1) 和新数组 (array2) 之间的数量差异,包括从 array1 到 array2 添加或删除的任何代码。

$array1 = ['code1' => 1, 'code2' => 2];    
$array2 = ['code1' => 0, 'code2' => 2, 'code3' => 3];

// Array expected
$diffQty = [
'code1' => -1, // 1 quantity deleted in array 2
'code2' => 0, // quantity no changed between array1 and array2
'code3' => 3 // new code added in array2 with 3 quantity
];

我试过类似的方法,但我没有在数组之间添加或删除代码:

$diffQty = [];
foreach ($array2 as $code => $qty) {
if (array_key_exists($code, $array1)) {
$diffQty = $array1[$code] - $array2[$code];
$diffQty[$code] = $diffQty;
}
}

最佳答案

您当前的问题是,如果键不存在于两个数组中,您什么都不做。

获取所有存在的唯一键,并将其放入一个单独的数组中。循环生成的数组,该数组现在包含数组 $array1$array2 中存在的所有键。从 $array2 中减去 $array1 中的值,如果在任一数组中都没有有效的键,则将其默认为零。

$array1 = ['code1' => 1, 'code2' => 2];    
$array2 = ['code1' => 0, 'code2' => 2, 'code3' => 3];
$all_keys = array_unique(array_merge(array_keys($array1), array_keys($array2)));
$output = array();

foreach ($all_keys as $code) {
$output[$code] = (!empty($array2[$code]) ? $array2[$code] : 0) - (!empty($array1[$code]) ? $array1[$code] : 0);
}

$output的结果

Array (
[code1] => -1
[code2] => 0
[code3] => 3
)

Live demo

关于php - 两个数组值之间的差量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43848967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com