Пример #1
0
 /**
  * @param int $totalSales
  * @param int $numberOfNewOrders
  * @param int $numberOfNewCustomers
  */
 public function __construct($totalSales, $numberOfNewOrders, $numberOfNewCustomers)
 {
     Assert::allInteger([$totalSales, $numberOfNewCustomers, $numberOfNewOrders]);
     $this->totalSales = $totalSales;
     $this->numberOfNewOrders = $numberOfNewOrders;
     $this->numberOfNewCustomers = $numberOfNewCustomers;
 }
 /**
  * {@inheritdoc}
  */
 public function distribute(array $integers, $amount)
 {
     Assert::allInteger($integers);
     Assert::integer($amount);
     $total = array_sum($integers);
     $distributedAmounts = [];
     foreach ($integers as $element) {
         $distributedAmounts[] = (int) round($element * $amount / $total, 0, PHP_ROUND_HALF_DOWN);
     }
     $missingAmount = $amount - array_sum($distributedAmounts);
     for ($i = 0; $i < abs($missingAmount); $i++) {
         $distributedAmounts[$i] += $missingAmount >= 0 ? 1 : -1;
     }
     return $distributedAmounts;
 }