Как быстро удалить элементы в массиве, которые < 5 друг от друга быстро.
пример:
array(1, 3, 5, 8, 11, 15);
Нужно вернуть следующую причину, потому что они больше 5, если вы рассчитываете разницу:
array(1, 8, 15);
Похоже, что для этого должна быть встроенная функция в php. Но я сбит с толку.
Для этого нет ничего встроенного, но сделать это довольно легко.
Сначала отсортируйте массив, если он уже не отсортирован.
sort($your_array);
Инициализируйте ваш массив результатов с первым элементом, а затем итерируйте массив. Каждый раз, когда вы получаете значение, по крайней мере, на 5 больше, чем предыдущее значение, добавляйте его к результату и сбрасывайте предыдущее значение на это значение.
$result[] = $previous = reset($your_array);
foreach ($your_array as $value) {
if ($value - $previous >= 5) {
$result[] = $previous = $value;
}
}
Других решений пока нет …