Нужно объединить 3 массива в один.
<?
define('prof', [
'plumber',
'engineer',
'administrator',
'manager',
'director',
'loader'
]);
define('pay', [
'25000',
'30000',
'20000',
'50000',
'100000',
'25000'
]);
define('effect', [
'12',
'20',
'15',
'15',
'30',
'8'
]);
?>
И сделать выборку исходя из процентов массива effect кто заслужено получил зарплату!
т.е. какие профессии получили зп, правильно, исходя из эффективности, пример если менеджер работал 15% и получил 50000, то не стыковка в плане администратор работал 15% и получил всего 20000, вот она не заслуженная зарплата)
в целом для решения этой задачи вам пригодятся функции array_map
, array_filter
и array_sum
. Можете, конечно, и руками в циклах все считать.
Сначала посчитаем весь фонд зп:
$ptotal = array_sum(pay);
далее тут функции можно всяко комбинировать, в более наглядном варианте сначала объединим массивы:
$data = array_map(function($p, $s, $e){
return ['prof' => $p, 'pay' => $s, 'effect' => $e];
}, prof, pay, effect);
или аналогично:
$data = array_map(function(...$v){
return array_combine(['prof', 'pay', 'effect'], $v);
}, prof, pay, effect);
потом отфильтруем:
$result = array_filter($data, function(&$v) use ($ptotal){
return $v['pay'] / $ptotal * 100 >= $v['effect'];
});
можно и по другому логику встраивать, например при маппинге сразу считать долю зп, и если не устраивает то возвращать null
. Тогда в фильтрации уже не нужен обратный вызов.
$result = array_filter(array_map(function($p, $s, $e) use ($ptotal){
$x = $s / $ptotal * 100 >= $e;
return !$x ? null : [
'prof' => $p,
'pay' => $s,
'effect' => $e
];
}, prof, pay, effect));
зы: что касается того, как просто слить массивы, то можно сделать
$data = array_map(null, prof, pay, effect);
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня ноутбук с установленной лицензионной windows 10 x64На локальный OpenServer x64 установил чистый сайт на wordpress, хочу импортировать на него данные...
Как установить вручную все индексы $i в цикле for PHP без всякого шага, чтобы отдельно с каждой переменной не связываться?
При выводе одной записи из базы методом getById($id) возвращает bool(false) но метод getAll() работает нормально