function findFloorAndCeil(array $arr, int $N): array {
$floorval = PHP_INT_MIN; // Initialize to smallest possible value
$ceilval = PHP_INT_MAX; // Initialize to largest possible value
foreach ($arr as $num) {
if ($num <= $N && $num > $floorval) {
$floorval = $num; // Update floorval if num is closer to N
}
if ($num >= $N && $num < $ceilval) {
$ceilval = $num; // Update ceilval if num is closer to N
}
}
// If no valid floorval or ceilval is found, set them to a special value
if ($floorval === PHP_INT_MIN) {
$floorval = -1;
}
if ($ceilval === PHP_INT_MAX) {
$ceilval = -1;
}
return [$floorval, $ceilval];
}
$arr = [4, 10, 8, 2, 6, 9, 1];
$N = 5;
list($floorval, $ceilval) = findFloorAndCeil($arr, $N);
echo "floor: " . ($floorval === -1 ? "None" : $floorval) . PHP_EOL;
echo "ceil: " . ($ceilval === -1 ? "None" : $ceilval) . PHP_EOL;
/*
run:
floor: 4
ceil: 6
*/