3v4l.org

run code in 300+ PHP versions simultaneously
<?php error_reporting(-1); header("Content-Type: text/plain; charset=utf-8"); mb_internal_encoding('utf-8'); abstract class Employee { public $boss; public $rank; public function __construct($boss, $rank) { $this->boss = $boss; $this->rank = $rank; } function getSalary() { if ($this->rank == 1) { $rankFactor = 1; } elseif ($this->rank == 2) { $rankFactor = 1.25; } elseif ($this->rank == 3) { $rankFactor = 1.5; } else return "Ошибка ранга!"; if ($this->boss == 0) { $bossFactor = 1; } elseif ($this->boss == 1) { $bossFactor = 2; } else return "Ошибка иерархии!"; return $this->rate * $rankFactor * $bossFactor; } function getReports() { if ($this->boss == 0) { $bossFactor = 1; } elseif ($this->boss == 1) { $bossFactor = 0; } else return "Ошибка иерархии!"; return $this->reports * $bossFactor; } function getCoffee() { if ($this->boss == 0) { $bossFactor = 1; } elseif ($this->boss == 1) { $bossFactor = 2; } else return "Ошибка иерархии!"; return $this->coffee * $bossFactor; } } class Manager extends Employee { public $rate = 500; public $coffee = 20; public $reports = 200; } class Marketer extends Employee { public $rate = 400; public $coffee = 15; public $reports = 150; } class Engineer extends Employee { public $rate = 200; public $coffee = 5; public $reports = 50; } class Analyst extends Employee { public $rate = 800; public $coffee = 50; public $reports = 5; } class Department { public $departmentName; public $departamentEmployees; public function __construct($departmentName) { $this->departmentName = $departmentName; } public function getTotalEmployees() { return count($this->departamentEmployees); } public function getTotalSalary() { $totalSalary = 0; foreach ($this->departamentEmployees as $employee) { $totalSalary += $employee->getSalary(); } return $totalSalary; } public function getTotalCoffee() { $totalCoffee = 0; foreach ($this->departamentEmployees as $employee) { $totalCoffee += $employee->getCoffee(); } return $totalCoffee; } public function getTotalReports() { $totalReports = 0; foreach ($this->departamentEmployees as $employee) { $totalReports += $employee->getReports(); } return $totalReports; } public function getAverageMoneyPerPage() { return round($this->getTotalSalary() / $this->getTotalReports()); } } $purchasing = new Department("Закупок"); $sales = new Department("Продаж"); $advertising = new Department("Рекламы"); $logistics = new Department("Логистики"); $purchasing->departamentEmployees = [ $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 2), $employee = new Manager(0, 2), $employee = new Manager(0, 2), $employee = new Manager(0, 3), $employee = new Manager(0, 3), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Manager(1, 2) ]; $sales->departamentEmployees = [ $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Analyst(0, 1), $employee = new Analyst(0, 1), $employee = new Analyst(0, 1), $employee = new Analyst(0, 2), $employee = new Analyst(0, 2), $employee = new Marketer(1, 2) ]; $advertising->departamentEmployees = [ $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Engineer(0, 1), $employee = new Engineer(0, 1), $employee = new Marketer(1, 3) ]; $logistics->departamentEmployees = [ $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 2), $employee = new Manager(0, 2), $employee = new Manager(0, 2), $employee = new Manager(0, 2), $employee = new Manager(0, 2), $employee = new Engineer(0, 1), $employee = new Engineer(0, 1), $employee = new Engineer(0, 1), $employee = new Engineer(0, 1), $employee = new Engineer(0, 1), $employee = new Manager(1, 1) ]; $departamentsList = [$purchasing, $sales, $advertising, $logistics]; function padLeft($string, $length) { $str = ""; if (mb_strlen($string) < $length) { $str = str_repeat(" ", $length - mb_strlen($string)) . $string; } return $str; } function padRight($string, $length) { $str = ""; if (mb_strlen($string) < $length) { return $string . str_repeat(" ", $length - mb_strlen($string)); } return $str; } $col1 = 30; $col2 = 8; $col3 = 8; $col4 = 8; $col5 = 8; $col6 = 12; $colLength = $col1 + $col2 + $col3 + $col4 + $col5 + $col6; echo str_repeat("-", $colLength + 1) . "\n"; echo padRight("Департамент", $col1) . padLeft("сотр.", $col2) . padLeft("тугр.", $col3) . padLeft("кофе", $col4) . padLeft("стр.", $col5) . padLeft("тугр./стр.", $col6) . "\n"; echo str_repeat("-", $colLength + 1) . "\n"; foreach ($departamentsList as $department) { echo padRight($department->departmentName, $col1) . padLeft($department->getTotalEmployees(), $col2) . padLeft($department->getTotalSalary(), $col3) . padLeft($department->getTotalCoffee(), $col4) . padLeft($department->getTotalReports(), $col5) . padLeft($department->getAverageMoneyPerPage(), $col6) . "\n"; } echo "\n"; $allEmployees = 0; $allSalary = 0; $allCoffee = 0; $allReports = 0; $allAverageMoneyPerPage = 0; foreach ($departamentsList as $department) { $allEmployees += $department->getTotalEmployees(); $allSalary += $department->getTotalSalary(); $allCoffee += $department->getTotalCoffee(); $allReports += $department->getTotalReports(); $allAverageMoneyPerPage += $department->getAverageMoneyPerPage(); } echo padRight("Среднее", $col1) . padLeft(round($allEmployees / count($departamentsList)), $col2) . padLeft(round($allSalary / count($departamentsList)), $col3) . padLeft(round($allCoffee / count($departamentsList)), $col4) . padLeft(round($allReports / count($departamentsList)), $col5) . padLeft(round($allAverageMoneyPerPage / count($departamentsList)), $col6) . "\n"; echo padRight("Всего", $col1) . padLeft(round($allEmployees), $col2) . padLeft(round($allSalary), $col3) . padLeft(round($allCoffee), $col4) . padLeft(round($allReports), $col5) . padLeft(round($allAverageMoneyPerPage), $col6) . "\n";
Output for 7.1.25 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
--------------------------------------------------------------------------- Департамент сотр. тугр. кофе стр. тугр./стр. --------------------------------------------------------------------------- Закупок 17 9925 350 3100 3 Продаж 24 13800 610 3325 4 Рекламы 36 16600 575 5450 3 Логистики 24 11625 425 3850 3 Среднее 25 12988 490 3931 3 Всего 101 51950 1960 15725 13
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 --------------------------------------------------------------------------- Департамент сотр. тугр. кофе стр. тугр./стр. --------------------------------------------------------------------------- Закупок 17 9925 350 3100 3 Продаж 24 13800 610 3325 4 Рекламы 36 16600 575 5450 3 Логистики 24 11625 425 3850 3 Среднее 25 12988 490 3931 3 Всего 101 51950 1960 15725 13

preferences:
260.5 ms | 403 KiB | 181 Q