Наивный раствор без array_fill()
. Эффективный способ памяти.
<?php
function array_search_key_range(int $needle, array $haystack)
{
foreach ($haystack as $range => $value) {
[$min, $max] = array_map('intval', explode('-', (string)$range, 2) + [1 => $range]);
if ($min <= $needle && $needle <= $max) {
return $value;
}
}
return false;
}
$data = [
1 => 1000,
2 => 500,
3 => 250,
'4-5' => 100,
'6-10' => 50,
'11-99' => 20,
];
var_dump(array_search_key_range(2, $data)); // 500
var_dump(array_search_key_range(4, $data)); // 100
var_dump(array_search_key_range(10, $data)); // 50
var_dump(array_search_key_range(98, $data)); // 20
var_dump(array_search_key_range(120, $data)); // false