Вывести интервал чисел php

Как получить все дни между датами в PHP

Несколько примеров как найти все дни в промежутке между двумя датами в виде значения и списка.

Количество дней между датами

$date_1 = '28.03.2022 00:00'; $date_2 = '02.04.2022 23:59'; $seconds = abs(strtotime($date_1) - strtotime($date_2)); echo round($seconds / 86400, 1); // 6
$date_1 = '28.03.2022 00:00'; $date_2 = '02.04.2022 18:00'; $seconds = abs(strtotime($date_1) - strtotime($date_2)); echo round($seconds / 86400, 1); // 5.6

Формирование массива, содержащий все дни из интервала

Первый способ – использование классов DatePeriod, DateTime и DateInterval (доступны с версии PHP 5.3).

* Если в конечной дате не указать время (23:59), то в результирующем массиве не будет последнего дня.

$period = new DatePeriod( new DateTime('28.03.2022'), new DateInterval('P1D'), new DateTime('02.04.2022 23:59') ); $dates = array(); foreach ($period as $key => $value) < $dates[] = $value->format('d.m.Y'); > print_r($dates);

Результат:

Array ( [0] => 28.03.2022 [1] => 29.03.2022 [2] => 30.03.2022 [3] => 31.03.2022 [4] => 01.04.2022 [5] => 02.04.2022 )

Функция на основе strtotime

function get_dates($start, $end, $format = 'd.m.Y') < $day = 86400; $start = strtotime($start . ' -1 days'); $end = strtotime($end . ' +1 days'); $nums = round(($end - $start) / $day); $days = array(); for ($i = 1; $i < $nums; $i++) < $days[] = date($format, ($start + ($i * $day))); >return $days; > $dates = get_dates('28.03.2022', '02.04.2022'); print_r($dates);

Результат:

Array ( [0] => 28.03.2022 [1] => 29.03.2022 [2] => 30.03.2022 [3] => 31.03.2022 [4] => 01.04.2022 [5] => 02.04.2022 )

Источник

range

Конечное значение, которым заканчивается последовательность.

Если указан параметр step , то он будет использоваться как инкремент (или декремент) между элементами последовательности. Параметр step не должен быть равен 0 и не должен выходить за пределы указанного диапазона. Если step не указан, он принимает значение по умолчанию, равное 1 .

Возвращаемые значения

Возвращает массив элементов от start до end , включительно.

Примеры

Пример #1 Примеры использования range()

// array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
foreach ( range ( 0 , 12 ) as $number ) echo $number ;
>

// Параметр step
// array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
foreach ( range ( 0 , 100 , 10 ) as $number ) echo $number ;
>

// Использование последовательности знаков
// array(‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’);
foreach ( range ( ‘a’ , ‘i’ ) as $letter ) echo $letter ;
>

// array(‘c’, ‘b’, ‘a’);
foreach ( range ( ‘c’ , ‘a’ ) as $letter ) echo $letter ;
>
?>

Примечания

Замечание:

Значения для последовательности знаков ограничены длиной в один символ. Если их длина больше одного, то только первый символ используется.

Смотрите также

User Contributed Notes 29 notes

To create a range array like

combine two range arrays using array_combine:

So with the introduction of single-character ranges to the range() function, the internal function tries to be «smart», and (I am inferring from behavior here) apparently checks the type of the incoming values. If one is numeric, including numeric string, then the other is treated as numeric; if it is a non-numeric string, it is treated as zero.

Читайте также:  Бэкенд php или python

If you pass in a numeric string in such a way that is is forced to be recognized as type string and not type numeric, range() will function quite differently.

echo implode ( «» , range ( 9 , «Q» ));
// prints 9876543210

echo implode ( «» , range ( «9 » , «Q» )); //space after the 9
// prints 9:;?@ABCDEFGHIJKLMNOPQ

echo implode ( «» , range ( «q» , «9 » ));
// prints qponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@ ?> =?>

I wouldn’t call this a bug, because IMO it is even more useful than the stock usage of the function.

The function «range» is very useful to get an array of characters as range(‘C’,’R’) does.

At work, I had to extend the function range($a,$b) to work in this special case: with two uppercase strings $a and $b, it should return all the possible strings between $a and $b.
This could be used for example to get the excel column indexes.
e.g. array( ‘A’ , ‘B’ , ‘C’ . ‘Z’ , ‘AA’ , ‘AB’ , ‘AC’ , ‘AD’ ) ?>

So I wrote the function getrange($min,$max) that exactly does this.

function getcolumnrange ( $min , $max ) $pointer = strtoupper ( $min );
$output =array();
while( positionalcomparison ( $pointer , strtoupper ( $max )) <= 0 )array_push ( $output , $pointer );
$pointer ++;
>
return $output ;
>

function positionalcomparison ( $a , $b ) $a1 = stringtointvalue ( $a ); $b1 = stringtointvalue ( $b );
if( $a1 > $b1 )return 1 ;
else if( $a1 < $b1 )return - 1 ;
else return 0 ;
>

/*
* e.g. A=1 — B=2 — Z=26 — AA=27 — CZ=104 — DA=105 — ZZ=702 — AAA=703
*/
function stringtointvalue ( $str ) $amount = 0 ;
$strarra = array_reverse ( str_split ( $str ));

for( $i = 0 ; $i < strlen ( $str ); $i ++)$amount +=( ord ( $strarra [ $i ])- 64 )* pow ( 26 , $i );
>
return $amount ;
>
?>

The function will generate an array of integers even if your numerical parameters are enclosed in quotes.
var_dump ( range ( ‘1’ , ‘2’ ) ); // outputs array(2) < [0]=>int(1) [1]=> int(2) >
?>

An easy way to get an array of strings is to map strval() to the range:
var_dump ( array_map ( ‘strval’ , range ( ‘1’ , ‘2’ )) ); // outputs array(2) < [0]=>string(1) «1» [1]=> string(1) «2» >
?>

You might expect range($n, $n-1) to be an empty array (as in e.g. Python) but actually PHP will assume a step of -1 if start is larger than end.

function natural_prime_numbers (array $range , bool $print_info = false ) : array $start_time = time ();
$primes_numbers = array();
$print = » ;
$count_range = count ( $range );
foreach( $range as $number ) $values_division_number = array();
if( $number === 0 || $number === 1 || ! is_int ( $number )) < // eliminate 0, 1 and other no integer
continue;
>
if( $number != 2 && $number % 2 === 0 ) < // eliminate 2 and pairs numbers
continue;
>
for( $i = 1 ; $i <= $number ; $i ++)$resultado_divisao = $number / $i ;
$values_division_number [ $i ] = $resultado_divisao ;

if( $count_range $print .= PHP_EOL ;
$info = ‘The number ‘ . $number . ‘ divided by the number ‘ . $i . ‘ is equal to: ‘ .( $number / $i );
$print .= $info ;
if( $i === $number ) $print .= PHP_EOL ;
>
>

$values_division_number = array_values ( $values_division_number ); // reindex array

// here we want only array with 2 indexes with the values 1 and own number (rule to a natural prime number)
if( count ( $values_division_number ) === 2 && $values_division_number [ 0 ] === $number && $values_division_number [ 1 ] === 1 ) $primes_numbers [ $number ] = $number ;
>

Читайте также:  Html css div scrollbar

>
>
return array(
‘length_prime_numbers’ => count ( $primes_numbers ),
‘prime_numbers’ => array_values ( $primes_numbers ),
‘print’ => $print ,
‘total_time_processing’ => ( time () — $start_time ). ‘ seconds.’ ,
);
>
var_dump ( natural_prime_numbers ( range ( 0 , 11 ))); // here the range() function 😉

// Result:
// array (size=3)
// ‘length_prime_numbers’ => int 5
// ‘prime_numbers’ =>
// array (size=5)
// 0 => int 2
// 1 => int 3
// 2 => int 5
// 3 => int 7
// 4 => int 11
// ‘print’ => string ‘
// O número 2 dividido pelo número 1 é igual a: 2
// O número 2 dividido pelo número 2 é igual a: 1

// O número 3 dividido pelo número 1 é igual a: 3
// O número 3 dividido pelo número 2 é igual a: 1.5
// O número 3 dividido pelo número 3 é igual a: 1

// O número 5 dividido pelo número 1 é igual a: 5
// O número 5 dividido pelo número 2 é igual a: 2.5
// O número 5 dividido pelo número 3 é igual a: 1.6666666666667
// O número 5 dividido pelo número 4 é igual a: 1.25
// O número 5 dividido pelo ‘.

// **************************** //
//
// * Remember that the function is recursive, that is: a range of 5000 takes more than 1 minute on a processor Intel® Core™ i5-8250U (3.40 GHz).
//
// **************************** //
?>

Источник

Вывести интервал чисел php

Преобразование массива чисел в интервалы

По работе возникла необходимость обработать массив чисел таким образом, чтобы все последовательные значения в нем были преобразованы в интервалы. То есть массив [1, 3, 4, 5, 6, 9, 10, 15] должен превратиться в [«1», «3-6», «9-10», «15»]. Быстренько набросал вот такую функцию, может быть пригодится кому-нибудь еще.

  1. // Преобразование массива чисел в интервалы
  2. function array_to_intervals ( $data =array(), $divider = ‘-‘ )
  3. // Оставить только уникальные значения
  4. $data = array_unique ( $data );
  5. sort ( $data );
  6. $tmp =array();
  7. $begin = $end = 0 ;
  8. for ( $i = 0 ; $i < count ( $data ); $i ++)
  9. // Начало интервала или одиночное значение
  10. if ( $begin == 0 )
  11. $begin = $end = $data [ $i ];
  12. >
  13. if (isset( $data [( $i + 1 )]))
  14. // Расширить границы интервала
  15. if ( $data [( $i + 1 )]==( $end + 1 ))
  16. $end ++;
  17. >
  18. else
  19. // Одиночное значение
  20. if ( $begin == $end )
  21. $tmp []= $begin ;
  22. >
  23. // Интервал
  24. else
  25. $tmp []= $begin . $divider . $end ;
  26. >
  27. $begin = $end = 0 ;
  28. >
  29. >
  30. >
  31. if ( count ( $data ))
  32. // Последнее значение
  33. if ( $begin == $end )
  34. $tmp []= $begin ;
  35. >
  36. else
  37. $tmp []= $begin . $divider . $end ;
  38. >
  39. >
  40. return $tmp ;
  41. >

Параметры функции: $data — массив для обработки, $divider — разделитель интервалов, по умолчанию «-«, но можно задать свой, например, «. «. На выходе — преобразованный массив с интервалами.

Источник

Вывод массивов с помощью интервала в форме

Вывод треугольника с помощью массивов
Здравствуйте спасибо заранее объявил двухмерный массив количества строк указан а столбцов нет а.

Вывод презентаций на форме с помощью HtmlAgilityPack
Мне подсказали, что с помощью htmlagilitypack можно реализовать вывод презентаций на форме, то.

Вывод записей из временного интервала
Нужно вывести записи которые заданны в этом временном интервале.Помогите плез)Время я ввожу в.

Вывод отчета из интервала возрастов
Здравствуйте уважаемые. Есть форма "Возраст". Необходимо, чтобы после выбора интервала в полях "с".

Тоесть вы указали дату, с которой по какую. Но вам надо учесть при этом не 2 эти даты а плюс те которые между ними. Правильно? Если так, то просто введя дату данного типа, сделать будет не просто поскольку если сделать дату с в одном месяце, а до в другом. То возникнут проблемы. Поскольку надо плюсовать числа, и в крайнем случае отнимать. Можно использовать strtotime() для цикла. Задав какой нибуть переменной дату «с» и в цикле проверять не больше или не ровна ли дата «до».

Я попытаюсь выполнить такой скрипт. Самому интересно.

$one = array ( 'date' => '18.12.2011' ); $two = array ( 'date' => '19.12.2011' ); echo "Дата: с $one.'> 
по $two
.'> ";
if(isset($_POST['ok'])) { echo $one."
"
.$two; }

Вывод простых чисел из интервала от 0 до 100
эта программа выводит все ТОЛЬКО простые числа из введенного массива. using System; using.

Вывод элементов массивов, сортировка массивов
вот ссылки program 1аЬ4; uses crt; const е=0.0010; d=l.Зе-7; var a, b, г, s, х, fa, fг, n, с.

Вывод чисел из интервала [0;1000], которые заканчиваются на 5 или 7
Как вывести от 0 до 1000 только те числа которые заканчиваются например на 5 и 7? using System;.

Вывод наименования числового интервала из файла формата .xml
Уважаемые форумчане. Подскажите пожалуйста по следующему вопросу. Возможно ли следующее.

Источник

Вывод массивов с помощью интервала в форме

Вывод треугольника с помощью массивов
Здравствуйте спасибо заранее объявил двухмерный массив количества строк указан а столбцов нет а.

Вывод презентаций на форме с помощью HtmlAgilityPack
Мне подсказали, что с помощью htmlagilitypack можно реализовать вывод презентаций на форме, то.

Вывод записей из временного интервала
Нужно вывести записи которые заданны в этом временном интервале.Помогите плез)Время я ввожу в.

Вывод отчета из интервала возрастов
Здравствуйте уважаемые. Есть форма "Возраст". Необходимо, чтобы после выбора интервала в полях "с".

Тоесть вы указали дату, с которой по какую. Но вам надо учесть при этом не 2 эти даты а плюс те которые между ними. Правильно? Если так, то просто введя дату данного типа, сделать будет не просто поскольку если сделать дату с в одном месяце, а до в другом. То возникнут проблемы. Поскольку надо плюсовать числа, и в крайнем случае отнимать. Можно использовать strtotime() для цикла. Задав какой нибуть переменной дату «с» и в цикле проверять не больше или не ровна ли дата «до».

Я попытаюсь выполнить такой скрипт. Самому интересно.

$one = array ( 'date' => '18.12.2011' ); $two = array ( 'date' => '19.12.2011' ); echo "Дата: с $one.'> 
по $two
.'> ";
if(isset($_POST['ok'])) { echo $one."
"
.$two; }

Вывод простых чисел из интервала от 0 до 100
эта программа выводит все ТОЛЬКО простые числа из введенного массива. using System; using.

Вывод элементов массивов, сортировка массивов
вот ссылки program 1аЬ4; uses crt; const е=0.0010; d=l.Зе-7; var a, b, г, s, х, fa, fг, n, с.

Вывод чисел из интервала [0;1000], которые заканчиваются на 5 или 7
Как вывести от 0 до 1000 только те числа которые заканчиваются например на 5 и 7? using System;.

Вывод наименования числового интервала из файла формата .xml
Уважаемые форумчане. Подскажите пожалуйста по следующему вопросу. Возможно ли следующее.

Источник

Оцените статью