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

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

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

PHP
千巷猫影 2023-07-01 14:12:12
我有两个数组:数组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];    }}但这不起作用。请问我缺少什么?非常感谢您的帮助。
查看完整描述

2 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

你有几个问题。首先,您应该检查产品类型 from 是否作为ie$cart中的键存在$rates


if(!in_array($key[$arr], $rates)){

应该:


if (isset($rates[$key])) {

其次,一旦确定键确实存在于中$rates,则需要迭代中的每个值$arr以获取其价格$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

3v4l.org 上的演示


查看完整回答
反对 回复 2023-07-01
?
偶然的你

TA贡献1841条经验 获得超3个赞

<?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;

?>


查看完整回答
反对 回复 2023-07-01
  • 2 回答
  • 0 关注
  • 102 浏览

添加回答

举报

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