Каким образом можно создать массив, где каждый элемент имеет формат [code => amount], где code представляет собой промокод и amount - сумма скидки в рублях, применяемая ко всему заказу?
В зависимости от используемого языка программирования, можно создать массив "купон" с помощью следующих методов:
1. В Python:
```python
coupons = [
{"code": "coupon1", "amount": 100},
{"code": "coupon2", "amount": 200},
{"code": "coupon3", "amount": 50}
]
```
2. В JavaScript:
```javascript
var coupons = [
{"code": "coupon1", "amount": 100},
{"code": "coupon2", "amount": 200},
{"code": "coupon3", "amount": 50}
];
```
3. В PHP:
```php
$coupons = [
["code" => "coupon1", "amount" => 100],
["code" => "coupon2", "amount" => 200],
["code" => "coupon3", "amount" => 50]
];
```
4. В Java:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<String, Integer> coupon1 = new HashMap<>();
coupon1.put("code", 1);
coupon1.put("amount", 100);
Map<String, Integer> coupon2 = new HashMap<>();
coupon2.put("code", 2);
coupon2.put("amount", 200);
Map<String, Integer> coupon3 = new HashMap<>();
coupon3.put("code", 3);
coupon3.put("amount", 50);
List<Map<String, Integer>> coupons = new ArrayList<>();
coupons.add(coupon1);
coupons.add(coupon2);
coupons.add(coupon3);
}
}
```
Они создают массив "купон" с указанным форматом для каждого элемента. Сейчас в массиве представлены три примера, но вы можете добавить столько элементов, сколько вам необходимо для ваших подарочных кодов и скидок.
Один из возможных вариантов переформулирования данного кода:
protected function getCouponsResult($order, $basket)
{
$productQuantity = [];
foreach ($basket as $basketItem) {
$id = $basketItem->getId();
$quantity = $basketItem->getQuantity();
$productQuantity[$id] = $quantity;
}
$orderDiscounts = $order->getDiscount();
$orderDiscounts = $orderDiscounts->getApplyResult(true);
$couponsList = $orderDiscounts['COUPON_LIST'];
$couponsBasket = $orderDiscounts['RESULT']['BASKET'];
$couponsPrices = $orderDiscounts['PRICES']['BASKET'];
$coupons = [];
foreach ($couponsList as $code => $data) {
$coupons[$data['ORDER_DISCOUNT_ID']] = $code;
}
$prices = [];
foreach ($couponsPrices as $productID => $data) {
$quantity = isset($productQuantity[$productID]) ? $productQuantity[$productID] : 1;
$prices[$productID] = $data['DISCOUNT'] * $quantity;
}
$result = [];
foreach ($couponsBasket as $productID => $discounts) {
foreach ($discounts as $discount) {
$discountID = $discount['DISCOUNT_ID'];
$code = isset($coupons[$discountID]) ? $coupons[$discountID] : null;
if (!$code) {
continue;
}
$result[$code] = isset($result[$code]) ? $result[$code] : 0;
$price = isset($prices[$productID]) ? $prices[$productID] : 0;
$result[$code] += $price;
}
}
$formattedResult = [];
foreach ($result as $code => $amount) {
$formattedResult[] = [
'promoCodeId' => $code,
'discountAmount' => $amount * 100
];
}
return $formattedResult;
}