我有两个数组:
数组A:
$rates = array(
'apple' = array(
'red' => 1.19,
'green' => 0.99,
'yellow' => 0.89
)
);
阵列B:
$cart = array(
'apple' = array(
'0' => red,
'1' => green
)
);
数组B是购物车之一,我需要从数组A获取费率。
所以:
1.19
0.99
总数应为2.18
。
这是我尝试过的:
foreach($cart as $key => $arr){
if(!in_array($key[$arr], $rates)){
$total += $rates[$key];
}
}
但这不起作用。
请问我缺少什么?
非常感谢您的帮助。
答案 0 :(得分:2)
您有几个问题。首先,您应该检查$cart
中的产品类型是否作为$rates
中的键,即
if(!in_array($key[$arr], $rates)){
应为:
if (isset($rates[$key])) {
第二,一旦确定密钥确实存在于$rates
中,则需要遍历$arr
中的每个值以从$rates
获取价格(使用null合并运算符,以避免值不在rates数组中的问题)
$total = 0;
foreach ($cart as $key => $arr) {
if (isset($rates[$key])) {
foreach ($arr as $value) {
$total += $rates[$key][$value] ?? 0;
}
}
}
echo $total;
输出:
2.18
答案 1 :(得分:0)
<?php
$rates = array(
'apple' => array(
'red' => 1.19,
'green' => 0.99,
'yellow' => 0.89
)
);
$cart = array(
'apple' => array(
'0' => 'red',
'1' => 'green'
)
);
$total = 0;
foreach($cart as $type => $items) {
if(array_key_exists($type, $rates)) {
foreach($items as $item) {
if(array_key_exists($item, $rates[$type])) {
$total += $rates[$type][$item];
}
}
}
}
echo $total;
?>