У меня есть 2 набора массивов. Первый массив выводит категорию и количество, второй - с категорией и ценой.
array:2 [
0 => array:1 [
"Adult " => " 2"
]
1 => array:1 [
" Senior " => " 1"
]
]
array:3 [
0 => array:6 [
"id" => 1
"variant_id" => 1
"variant_dtl_name" => "Adult"
"variant_dtl_price" => 25.0
]
1 => array:6 [
"id" => 2
"variant_id" => 1
"variant_dtl_name" => "Senior"
"variant_dtl_price" => 15.0
]
2 => array:6 [
"id" => 3
"variant_id" => 1
"variant_dtl_name" => "Children"
"variant_dtl_price" => 8.0
]
]
Как я могу перекрестно сопоставить эти два массива, чтобы получить общую цену? Например: Adult x 2
выдает цену 50
а Senior x 1
будет выводить 15
а сумма будет суммироваться до 65
. Благодарю!
Чтобы сделать его менее дорогостоящим, сначала сделайте $price_scale
содержащий цены категории.
И затем умножив это в первом массиве, чтобы рассчитать цену категории.
Предполагая имя первого массива как $array1
и второй $array2
.
$price_scale = [];
foreach ($array2 as $arr)
{
$price_scale[trim($arr['variant_dtl_name'])] = $arr['variant_dtl_price'];
}
$count = [];
foreach ($array1 as $arr)
{
$key = key($arr); $name = trim($key);
$count[$name] = $price_scale[$name] * $arr[$key];
}
print_r($count);
Чтобы получить общую сумму, еще одна строка
$sum = array_sum($count);
Этот foreach будет итерации
(t1 + t2) раз
t1 = количество массивов в $ array1
t2 = количество массивов в $ array2
Попробуйте это. Должно сработать. Я думаю, вы понимаете, что такое $secondArray
и $thirdArray
. Я знаю, что это результат.
<?php
foreach($secondArray as $catKey => $cat){
foreach($cat as $key=>$val){
$categoryName = $key;
$quantity = $val;
}
foreach($thirdArray as $catDetails){
if($catDetails['variant_dtl_name'] == $categoryName){
$secondArray[$catKey]['price'] = $catDetails['variant_dtl_price'] * $quantity;
$price[] = $catDetails['variant_dtl_price'] * $quantity;
}
}
}
print_r($secondArray);
//Since You needed the total, you can do this.
echo array_sum($price);
?>
foreach
должно хватить