Есть ли функция для получения N ближайших чисел определенного числа?

#php #numbers

#php #числа

Вопрос:

Есть ли встроенная функция для получения ближайших N чисел определенного числа с помощью PHP, пожалуйста? Я имею в виду, что у нас есть, например, число 5 . Теперь мне нужно получить массив, подобный этому [3, 4, 5, 6, 7] .

Итак, я ищу какую-то функцию, nearestNumbers(5, 2) где 5 — конкретное число, а 2 — количество чисел вверх / вниз до определенного числа, которое делает [3, 4, 5, 6, 7] . Спасибо!


На самом деле, при использовании разбиения Laravel на страницы с пользовательским $elements .. это выглядит действительно странно:

 [
$paginator->currentPage()-2,
$paginator->currentPage()-1,
$paginator->currentPage(),
$paginator->currentPage() 1,
$paginator->currentPage() 2
]
  

Комментарии:

1. функция диапазона — это то, что вы ищете.

2. Вероятно, не лучшее решение, поскольку я знаю только среднее число, а не начальные / конечные числа.. но @phparkle завершил вашу идею. Отлично, спасибо! 🙂

Ответ №1:

Лучшее, что вы можете сделать с помощью встроенной функции, вероятно, range :

 range( $paginator->currentPage()-2, $paginator->currentPage() 2 )
  

Вы могли бы написать вспомогательную функцию, подобную этой:

 function nearestNumbers( $x, $d ) {
    return range( $x - $d, $x   $d );
}
  

Вы могли бы использовать min и max для ограничения диапазона:

 function nearestNumbers( $x, $d, $lim ) {
    return range( max( $x - $d, 1 ), min( $x   $d, $lim ) );
}
  

Документация:https://www.php.net/manual/en/function.range.php

Комментарии:

1. Для страниц <= 0 или >= max нет проверок границ.

2. Да, на данный момент этого достаточно. Спасибо.

3. @MarkusZeller Я проверю границы позже в коде, так что сейчас это не проблема для меня .. но я согласен, что должно быть лучшее решение, включая отрицательные числа и т.д. Спасибо!