#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 Я проверю границы позже в коде, так что сейчас это не проблема для меня .. но я согласен, что должно быть лучшее решение, включая отрицательные числа и т.д. Спасибо!