php减法关联数组

php减法关联数组,php,multidimensional-array,Php,Multidimensional Array,我有两个关联数组。我需要减去($price-$tax)得到$total price: $price['lunch'] = array("food" => 10, "beer"=> 6, "wine" => 9); $price['dinner'] = array("food" => 15, "beer"=> 10, "wine" => 10); $tax['lunch'] = array("food" => 2, "beer"=> 3, "

我有两个关联数组。我需要减去($price-$tax)得到$total price:

 $price['lunch'] = array("food" => 10, "beer"=> 6, "wine" => 9);
 $price['dinner'] = array("food" => 15, "beer"=> 10, "wine" => 10);

 $tax['lunch'] = array("food" => 2, "beer"=> 3, "wine" => 2);
 $tax['dinner'] = array("food" => 4, "beer"=> 6, "wine" => 4);
所需结果数组:

 $result['lunch'] = (['food'] => 8, ['beer'] =>3, ['wine'] => 7 )
 $result['dinner'] = (['food'] => 11, ['beer'] =>4, ['wine'] => 6   )
我正在尝试以下函数和数组映射,但无效:

function minus($a, $b) {
    return $a - $b;
 }

      foreach ($price as  $value)
        {
            $big = $value;
            foreach($tax as $v) {
                $small = $v;
        $e[] = array_map("minus",$big, $small);
        }       
        }

使用上面的方法,我得到了四个数组(第一个和最后一个都是正确的),所以它是不正确的。谢谢你提供的任何信息

您可以使用键而不是数组映射进行比较。使用double foreach,您可以进行任意数量的用餐和食物类型:

foreach(array_keys($price) as $meal)
{
    foreach(array_keys($price[$meal]) as $type)
    {
        $e[$meal][$type] = $price[$meal][$type] - $tax[$meal][$type];
    }
}

注意,此代码不会查找膳食或食品类型中缺少的项目…

如果
$price
$tax
的结构始终相等,则可以使用以下代码:

<?php

$price['lunch'] = array("food" => 10, "beer"=> 6, "wine" => 9);
$price['dinner'] = array("food" => 15, "beer"=> 10, "wine" => 10);

$tax['lunch'] = array("food" => 2, "beer"=> 3, "wine" => 2);
$tax['dinner'] = array("food" => 4, "beer"=> 6, "wine" => 4);

$result = array();
foreach( $price as $what => $value)
{
    foreach( $value as $food => $foodPrice )
    {
        $result[$what][$food] = $foodPrice - $tax[$what][$food];
    }
}

second foreach中的$MEIN是一个字符串而不是数组-我得到一个错误-我仍然不确定这应该如何工作。
print_r($result); 

Array
(
    [lunch] => Array
        (
            [food] => 8
            [beer] => 3
            [wine] => 7
        )

    [dinner] => Array
        (
            [food] => 11
            [beer] => 4
            [wine] => 6
        )

)