Сравнение массива PHP, чтобы получить общую сумму

1

У меня есть 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. Благодарю!

  • 5
    Покажите нам, что вы пытались
  • 1
    просто зациклите их все, foreach должно хватить
Теги:
arrays

2 ответа

1
Лучший ответ

Чтобы сделать его менее дорогостоящим, сначала сделайте $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

  • 0
    ОК, как подвести итоги по каждой категории?
  • 0
    см редактировать @ngMan
Показать ещё 1 комментарий
4

Попробуйте это. Должно сработать. Я думаю, вы понимаете, что такое $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);
    ?>
  • 0
    возвращает обратно массив 2.
  • 0
    Можете ли вы показать мне результат?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню