<?php
$fizz = function (int $value): bool {
return $value % 3 == 0;
};
$buzz = function (int $value): bool {
return $value % 5 == 0;
};
$filters = [$fizz, $buzz];
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30];
/**
* @param int[] $numbers
* @param callable[] $filters
* @return int[]
*/
function findAll(array $numbers, array $filters)
{
$retVal = $numbers;
foreach ($filters as $filter) {
$temp = [];
foreach ($retVal as $number) {
if ($filter($number)) {
$temp[] = $number;
}
}
$retVal = $temp;
}
return $retVal;
}
$nums = findAll($numbers, $filters);
print_r($nums);
Comments