[英]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
<?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.