我有两个数组:
数组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
请问我缺少什么?
非常感谢您的帮助。
答案 0 :(得分:1)
您可以将rates数组与购物车数组中的信息嵌套在一起,然后求和。
$sum =0;
foreach($cart as $prod => $sub){
foreach($sub as $color){
$sum += $rates[$prod][$color]['rate'];
}
}
echo $sum;
编辑:我相信您在代码中只会错误地评估价值和价值。
https://3v4l.org/pj3WL
答案 1 :(得分:0)
要指出原始逻辑中的缺陷,您并不会达到$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'];
}
}
}