簡體   English   中英

比較 PHP 中的兩個多維 arrays 對數據求和

[英]Compare two multidimensional arrays in PHP to sum datas

我有兩個 arrays:

數組 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];
    }
}

但它不起作用。

請問我缺少什么?

非常感謝您的幫助。

你有幾個問題。 首先,您應該檢查$cart中的產品類型是否作為$rates中的鍵存在,即

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

應該:

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

其次,一旦您確定密鑰確實存在於$rates中,您就需要遍歷$arr中的每個值以從$rates中獲取它們的價格(使用 null 合並運算符來避免值不在費率中的問題大批):

$total = 0;
foreach ($cart as $key => $arr) {
    if (isset($rates[$key])) {
        foreach ($arr as $value) {
            $total += $rates[$key][$value] ?? 0;
        }
    }
}
echo $total;

Output:

2.18

3v4l.org 上的演示

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM