为了账号安全,请及时绑定邮箱和手机立即绑定

在 PHP 中比较两个多维数组以求和

在 PHP 中比较两个多维数组以求和

PHP
慕村9548890 2023-06-30 16:27:48
我有两个数组:数组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


查看完整回答
反对 回复 2023-06-30
?
繁花不似锦

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'];

        }

    }

}


查看完整回答
反对 回复 2023-06-30
  • 2 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信