php减法关联数组
我有两个关联数组。我需要减去($price-$tax)得到$total price: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['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
)
)