[英]Comparing two multidimensional arrays in PHP to sum rates
我有两个 arrays:
数组 A:
$rates = array(
'apple' => array(
'red' => array(
'rate' => 1.19,
'resume' => 'This is a red apple.'
),
'green' => array(
'rate' => 0.99,
'resume' => 'This is a green apple.'
),
'yellow' => array(
'rate' => 0.89,
'resume' => 'This is a yellow apple.'
),
)
);
阵列 B:
$cart = array(
'apple' => array(
'0' => red,
'1' => green
)
);
阵列 B 是购物车之一,我需要从阵列 A 获取费率。
所以:
1.19
0.99
总计应为2.18
。
这是我尝试过的:
$total = 0;
foreach ($cart as $key => $arr) {
if (isset($rates[$key])) {
foreach ($arr as $value) {
$total += $rates[$key]['rate'][$value] ?? 0;
}
}
}
echo $total;
但它不起作用。 https://3v4l.org/vsEvA
请问我缺少什么?
非常感谢您的帮助。
您可以将 rate 数组与您在购物车数组中的信息嵌套并求和。
$sum =0;
foreach($cart as $prod => $sub){
foreach($sub as $color){
$sum += $rates[$prod][$color]['rate'];
}
}
echo $sum;
编辑:我相信你的代码中只有错误的价值和评价方式。
https://3v4l.org/pj3WL
要指出原始逻辑中的缺陷,您不会进入$rates
数组的颜色级别。
这是缺少部分的逻辑。
foreach ($cart as $key => $arr) {
if (isset($rates[$key])) {
foreach ($arr as $value) {
foreach($rates[$key] as $colorKey => $color)
if ($colorKey === $value)
$total += $color['rate'];
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.