Быстрый способ отфильтровать элементы из массива, которые разделены x числами

Как быстро удалить элементы в массиве, которые < 5 друг от друга быстро.

пример:

array(1, 3, 5, 8, 11, 15);

Нужно вернуть следующую причину, потому что они больше 5, если вы рассчитываете разницу:

array(1, 8, 15);

Похоже, что для этого должна быть встроенная функция в php. Но я сбит с толку.

0

Решение

Для этого нет ничего встроенного, но сделать это довольно легко.

Сначала отсортируйте массив, если он уже не отсортирован.

sort($your_array);

Инициализируйте ваш массив результатов с первым элементом, а затем итерируйте массив. Каждый раз, когда вы получаете значение, по крайней мере, на 5 больше, чем предыдущее значение, добавляйте его к результату и сбрасывайте предыдущее значение на это значение.

$result[] = $previous = reset($your_array);
foreach ($your_array as $value) {
if ($value - $previous >= 5) {
$result[] = $previous = $value;
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector