Как получить значения массива без цикла?
Как получить значения массива без цикла?
Циклом получить нет проблем, но очень не устраивает скорость выполнения в несколько минут, нужно хотя бы сократить на несколько секунд
Массив отсортирован по ключу, ключ это время time()
$start = 21;
$end = 25;
/* Пример исходного массива, может быть более миллиона значений
В реальности он гораздо сложнее и выполняется внутри небольших циклов */
$array = [20, 21, 22, 23, 24, 25, 26];
/* Получить результат на основе $start и $end */
$result = [21, 22, 23, 24, 25];
Ответы (1 шт):
Автор решения: Borislav
→ Ссылка
Если значения в массиве отсортированы, то самый простой способ, это что-то вроде этого:
function getRange(array $sortedArray, int $start, int $end): array
{
$keyStart = array_search($start, $sortedArray);
return array_slice(
$sortedArray,
$keyStart,
array_search($end, $sortedArray) - $keyStart
);
}