Задан массив объектов:
class A {
public __conctruct(private int $skill, private int $cost) { }
public function getSkill(): int { $return $this->skill; }
public function getCost(): int { $return $this->cost; }
}
$arr = [
new A(10, 20),
new A(90, 5),
new A(33, 45),
];
function getMaxSkill($array, int $resource) ?A; // сигнатура функции
нужна реализация getMaxSkill, через array_reduce, чтобы результатом работы функции был объект или null. В случае объекта, возвращается объект с максимальным значением skill за указанные ресурсы.
Пробовал сделать так:
function getMaxSkill($array, int $resource) ?A {
return array_reduce(
$array,
function (?A $prev, A $curr) use ($resource)
{
if (!$prev) {
return $curr;
}
$cond = $curr->getSkill() > $prev->getSkill() && $curr->getCost() <= $resource;
return $cond ? $curr : null;
}
);
}
Но не работает..