繁体   English   中英

比较 PHP 中的两个多维 arrays 与总和率

[英]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/C6U3f

编辑:我相信你的代码中只有错误的价值和评价方式。
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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM