我有两个数组:数组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请问我缺少什么?非常感谢您的帮助。
2 回答

幕布斯6054654
TA贡献1876条经验 获得超7个赞
您可以将费率数组与购物车数组中的信息嵌套在一起,然后将其求和。
$sum =0;
foreach($cart as $prod => $sub){
foreach($sub as $color){
$sum += $rates[$prod][$color]['rate'];
}
}
echo $sum;
https://3v4l.org/C6U3f
编辑:我相信您的代码中只有错误的值和速率。
https://3v4l.org/pj3WL

繁花不似锦
TA贡献1851条经验 获得超4个赞
要指出你原来逻辑中的缺陷,你不会去到数组颜色的层面$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'];
}
}
}
- 2 回答
- 0 关注
- 155 浏览
添加回答
举报
0/150
提交
取消