PHP:二维数组的计算

PHP:二维数组的计算,php,Php,我有两个阵列,如下所示: array(2) { ["2018-05"]=> string(2) "15" ["2018-06"]=> string(3) "100" } array(1) { ["2018-05"]=> string(1) "5" } 我希望进行计算以找出差异,以便返回: array(2) { ["2018-05"]=> string(2) "10" ["2018-06"]=> string(3) "100" } 由于这是一个多维数组,我不知道

我有两个阵列,如下所示:

array(2) { ["2018-05"]=> string(2) "15" ["2018-06"]=> string(3) "100" }
array(1) { ["2018-05"]=> string(1) "5" } 
我希望进行计算以找出差异,以便返回:

array(2) { ["2018-05"]=> string(2) "10" ["2018-06"]=> string(3) "100" }
由于这是一个多维数组,我不知道如何显示“年-月”作为数组键,有人能告诉我吗

谢谢。

试试这段代码

$a = ["2018-05"=> "15", "2018-06"=> "100" ];
$b = ["2018-05"=> "5"];

$c = $a;

foreach($b as $k=> $i){
    if(array_key_exists($k,$c)){
        $c[$k] = $a[$k] - $b[$k];
    }
    else{
        $c[$k] = 0-$i;
    }
}

假设您不想考虑相同的值,而想要绝对值,那么这应该是可行的

$els[]["2018-05"]="15";
$els[]["2018-06"]="100";
$els[]["2018-05"]="5" ;
$els[]["2018-05"]="1" ;//added
$els[]["2018-06"]="50";//added

    $newEls = [];

    foreach($els as $key => $el){

        $newEls[key($el)] = $el[key($el)];

          foreach($els as $key2 => $el2){

              if(key($els[$key]) == key($els[$key2]) && $els[$key][key($els[$key])] != $els[$key2][key($els[$key2])]){

              $newEls[key($el)] = abs($els[$key][key($els[$key])] - $els[$key2][key($els[$key2])]);

              }


        }


        }

    echo "<pre>";print_r($newEls);
$els[][“2018-05”]=“15”;
$els[][“2018-06”]=“100”;
$els[][“2018-05”]=“5”;
$els[][“2018-05”]=“1”//补充
$els[][“2018-06”]=“50”//补充
$newEls=[];
foreach($els as$key=>$el){
$newEls[key($el)]=$el[key($el)];
foreach($els为$key2=>$el2){
如果(键($els[$key])==key($els[$key2])&&$els[$key][key($els[$key])!=$els[$key2][key($els[$key2])){
$newEls[key($el)]=abs($els[$key][key($els[$key])]-$els[$key2][key($els[$key2]);
}
}
}
回声“;印刷费($newEls);

如果您想保持相同的值,如
[0][“2018-05”]=“15”
[1][“2018-05”]=“15”
,则需要另一种方法。因为也许最好的方法是使用队列。

您可以使用获取密钥,因此您需要获取两个密钥列表并合并它们并进行运算。谢谢您的共享,我还将尝试这组代码。
<?php

$a = ['2018-05'=> '15', '2018-06'=> '100'];
$b = ['2018-05'=> '5'];

$years = array_map(NULL, $a, $b);
$years = array_combine(array_keys($a), $years);

$differences = array_map(function ($year_diffs) : float {

    // Did we get a pair to compare?
    $has_diff = isset($year_diffs[0]) and isset($year_diffs[1]);

    // If we got a pair then compare, else assume we got one.
    $diff = $has_diff ? abs($year_diffs[0] - $year_diffs[1]) : $year_diffs[0];

    return $diff;
}, $years);

var_dump($differences);