Php сортировать массив дат

Php сортировать массив дат

  • Different ways to write a PHP code
  • How to write comments in PHP ?
  • Introduction to Codeignitor (PHP)
  • How to echo HTML in PHP ?
  • Error handling in PHP
  • How to show All Errors in PHP ?
  • How to Start and Stop a Timer in PHP ?
  • How to create default function parameter in PHP?
  • How to check if mod_rewrite is enabled in PHP ?
  • Web Scraping in PHP Using Simple HTML DOM Parser
  • How to pass form variables from one page to other page in PHP ?
  • How to display logged in user information in PHP ?
  • How to find out where a function is defined using PHP ?
  • How to Get $_POST from multiple check-boxes ?
  • How to Secure hash and salt for PHP passwords ?
  • Program to Insert new item in array on any position in PHP
  • PHP append one array to another
  • How to delete an Element From an Array in PHP ?
  • How to print all the values of an array in PHP ?
  • How to perform Array Delete by Value Not Key in PHP ?
  • Removing Array Element and Re-Indexing in PHP
  • How to count all array elements in PHP ?
  • How to insert an item at the beginning of an array in PHP ?
  • PHP Check if two arrays contain same elements
  • Merge two arrays keeping original keys in PHP
  • PHP program to find the maximum and the minimum in array
  • How to check a key exists in an array in PHP ?
  • PHP | Second most frequent element in an array
  • Sort array of objects by object fields in PHP
  • PHP | Sort array of strings in natural and standard orders
  • How to pass PHP Variables by reference ?
  • How to format Phone Numbers in PHP ?
  • How to use php serialize() and unserialize() Function
  • Implementing callback in PHP
  • PHP | Merging two or more arrays using array_merge()
  • PHP program to print an arithmetic progression series using inbuilt functions
  • How to prevent SQL Injection in PHP ?
  • How to extract the user name from the email ID using PHP ?
  • How to count rows in MySQL table in PHP ?
  • How to parse a CSV File in PHP ?
  • How to generate simple random password from a given string using PHP ?
  • How to upload images in MySQL using PHP PDO ?
  • How to check foreach Loop Key Value in PHP ?
  • How to properly Format a Number With Leading Zeros in PHP ?
  • How to get a File Extension in PHP ?
  • How to get the current Date and Time in PHP ?
  • PHP program to change date format
  • How to convert DateTime to String using PHP ?
  • How to get Time Difference in Minutes in PHP ?
  • Return all dates between two dates in an array in PHP
  • Sort an array of dates in PHP
  • How to get the time of the last modification of the current page in PHP?
  • How to convert a Date into Timestamp using PHP ?
  • How to add 24 hours to a unix timestamp in php?
  • Sort a multidimensional array by date element in PHP
  • Convert timestamp to readable date/time in PHP
  • PHP | Number of week days between two dates
  • PHP | Converting string to Date and DateTime
  • How to get last day of a month from date in PHP ?
  • PHP | Change strings in an array to uppercase
  • How to convert first character of all the words uppercase using PHP ?
  • How to get the last character of a string in PHP ?
  • How to convert uppercase string to lowercase using PHP ?
  • How to extract Numbers From a String in PHP ?
  • How to replace String in PHP ?
  • How to Encrypt and Decrypt a PHP String ?
  • How to display string values within a table using PHP ?
  • How to write Multi-Line Strings in PHP ?
  • How to check if a String Contains a Substring in PHP ?
  • How to append a string in PHP ?
  • How to remove white spaces only beginning/end of a string using PHP ?
  • How to Remove Special Character from String in PHP ?
  • How to create a string by joining the array elements using PHP ?
  • How to prepend a string in PHP ?
Читайте также:  Общая структура программ javascript

Источник

Php сортировать массив дат

  • Different ways to write a PHP code
  • How to write comments in PHP ?
  • Introduction to Codeignitor (PHP)
  • How to echo HTML in PHP ?
  • Error handling in PHP
  • How to show All Errors in PHP ?
  • How to Start and Stop a Timer in PHP ?
  • How to create default function parameter in PHP?
  • How to check if mod_rewrite is enabled in PHP ?
  • Web Scraping in PHP Using Simple HTML DOM Parser
  • How to pass form variables from one page to other page in PHP ?
  • How to display logged in user information in PHP ?
  • How to find out where a function is defined using PHP ?
  • How to Get $_POST from multiple check-boxes ?
  • How to Secure hash and salt for PHP passwords ?
  • Program to Insert new item in array on any position in PHP
  • PHP append one array to another
  • How to delete an Element From an Array in PHP ?
  • How to print all the values of an array in PHP ?
  • How to perform Array Delete by Value Not Key in PHP ?
  • Removing Array Element and Re-Indexing in PHP
  • How to count all array elements in PHP ?
  • How to insert an item at the beginning of an array in PHP ?
  • PHP Check if two arrays contain same elements
  • Merge two arrays keeping original keys in PHP
  • PHP program to find the maximum and the minimum in array
  • How to check a key exists in an array in PHP ?
  • PHP | Second most frequent element in an array
  • Sort array of objects by object fields in PHP
  • PHP | Sort array of strings in natural and standard orders
  • How to pass PHP Variables by reference ?
  • How to format Phone Numbers in PHP ?
  • How to use php serialize() and unserialize() Function
  • Implementing callback in PHP
  • PHP | Merging two or more arrays using array_merge()
  • PHP program to print an arithmetic progression series using inbuilt functions
  • How to prevent SQL Injection in PHP ?
  • How to extract the user name from the email ID using PHP ?
  • How to count rows in MySQL table in PHP ?
  • How to parse a CSV File in PHP ?
  • How to generate simple random password from a given string using PHP ?
  • How to upload images in MySQL using PHP PDO ?
  • How to check foreach Loop Key Value in PHP ?
  • How to properly Format a Number With Leading Zeros in PHP ?
  • How to get a File Extension in PHP ?
  • How to get the current Date and Time in PHP ?
  • PHP program to change date format
  • How to convert DateTime to String using PHP ?
  • How to get Time Difference in Minutes in PHP ?
  • Return all dates between two dates in an array in PHP
  • Sort an array of dates in PHP
  • How to get the time of the last modification of the current page in PHP?
  • How to convert a Date into Timestamp using PHP ?
  • How to add 24 hours to a unix timestamp in php?
  • Sort a multidimensional array by date element in PHP
  • Convert timestamp to readable date/time in PHP
  • PHP | Number of week days between two dates
  • PHP | Converting string to Date and DateTime
  • How to get last day of a month from date in PHP ?
  • PHP | Change strings in an array to uppercase
  • How to convert first character of all the words uppercase using PHP ?
  • How to get the last character of a string in PHP ?
  • How to convert uppercase string to lowercase using PHP ?
  • How to extract Numbers From a String in PHP ?
  • How to replace String in PHP ?
  • How to Encrypt and Decrypt a PHP String ?
  • How to display string values within a table using PHP ?
  • How to write Multi-Line Strings in PHP ?
  • How to check if a String Contains a Substring in PHP ?
  • How to append a string in PHP ?
  • How to remove white spaces only beginning/end of a string using PHP ?
  • How to Remove Special Character from String in PHP ?
  • How to create a string by joining the array elements using PHP ?
  • How to prepend a string in PHP ?
Читайте также:  Начать изучать язык программирования питон

Источник

Как отсортировать массив по дате в формате от и до?

Привет хабр, как возможно отсортировать массив в котором имеется статическая дата по методу от и до?
Я попробовал получить разницу в днях, между двумя датами для сортировки и пустить их в цикл и в цикле конвертировать индекс дня в дату начиная от даты который указана в сортировке типа «от», но ничего не вышло, так как получается двумерный цикл и данные обрабатываются в некорректном порядке.

К примеру мы имеем массив который содержит внутри себя 10 элементов с разными датами, к примеру от 2022-04-01 до до 2022-04-10, юзер хочет отсортировать эти данные по дате с 2022-04-02 по 2022-04-07.

Простой 1 комментарий

Compolomus

ThunderCat

1) Зависит от формата даты. пример массива не помешает. так же как и вариант «такое хочу получить».
2) Если данные получены из бд, правильным ответом будет добавить сортировку в запрос.

1. Массив выглядит следующим образом

array(3) < [0]=>array(1) < ["date"]=>string(10) "2022-04-10" > [1]=> array(1) < ["date"]=>string(10) "2022-04-11" > [2]=> array(1) < ["date"]=>string(10) "2022-04-12" > >

2. Данные получаются из базы данных, но сам модуль ориентирован на автоматизированную сортировку в процессе запроса от клиента.

ThunderCat

ThunderCat, В том, что вся иная сортировка выполняется с уже готовыми данными полученными из базы данных

Compolomus

ThunderCat

На программистском это значит что модуль берет от пользователя вводные данные (сортировка, лимит выборки, условия) и выдает готовую выборку, в нужном порядке и с нужными ограничениями. Или у вас какие-то другие модули?

Compolomus

Compolomus

ThunderCat

селект * фром `таблица` вэа `дате` >= :юзердате_старт энд `дате` 

Дмитрий, SELECT * FROM table много что вам дал этот запрос? всю логику которую можно выполнить при помощи PHP, я выполняю при помощи PHP, потому как с SQL я знаком на базовых запросах

ThunderCat

всю логику которую можно выполнить при помощи PHP, я выполняю при помощи PHP, потому как с SQL я знаком на базовых запросах

Мало тебя в детстве. в угол ставили. Все что можно сделаеть на уровне бд средствами бд, НИКОГДА не выносится на уровень приложения. Так как это как минимум двойная работа и лишняя трата памяти.

Compolomus

baby_2023, на самом деле достаточно дал)
select *, unix_timestamp as dt from table
В массиве появится поле для простоты нужного вам действия, так же продолжите без углубления в sql
Просто надо будет фильтровать массив, просто по числам проще будет, чем по строкам
https://www.php.net/manual/ru/function.array-filter.php
Как из даты получить timestamp думаю догадаетесь

ThunderCat

baby_2023, если посмотреть, как реализуются типичные выражения select, то окажется, что дальше секции from есть именно те секции этого выражения, которые могут и отсечь лишнее, и отсортировать, не отходя от кассы, то есть от SQL.

Compolomus

alexalexes, Мне и правда стоит больше углубиться в SQL, потому как иногда трачу намного больше времени чем мог бы затратить бы

ThunderCat

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

Compolomus

baby_2023, поставьте phpmyadmin и прям там производите отладку запросов, с помощью гугла и какой то матери вы осилите базовые запросы за пол дня

Compolomus

gzhegow

Не понимаю, если хочешь просто по дате сортировать по убыванию, то функция

$dates = []; for ($i = 0; $i < 10; $i++) < $dates[] = new DateTime('now +' . $i . 'days'); >usort($dates,function ($a, $b) < return null ?? ( $b < $a ? -1 : null ) ?? ( $b >$a ? 1 : null ) ?? 0; >); var_dump($dates);

Если твоя задача сортировать массив по возрастанию РАЗНИЦЫ дат, то нужно так:

$dates = []; for ($i = 0; $i < 10; $i++) < $dates[] = [ new DateTime('now +' . $i . 'days'), new DateTime('now +' . $i+$i . 'days') ]; >usort($dates,function ($a, $b) < $diffA = $a[1]->getTimestamp() - $a[0]->getTimestamp(); $diffB = $b[1]->getTimestamp() - $b[0]->getTimestamp(); return null ?? ( $diffA < $diffB ? -1 : null ) ?? ( $diffA >$diffB ? 1 : null ) ?? 0; >); var_dump($dates);

Помнить, что на getTimestamp() влияет временная зона. То есть 2 часа по Гринвичу меньше чем 2 часа по Москве, это как бы понятно, просто здесь тоже это важно.

Третий вариант, который "возможно" ты хотел получить здесь - как определить пересечение дат:

# опционально, можно донастраивать с помощью знаков `=`, чтоб получить "включая-исключая" # и оператора NOT, чтобы инвертировать. # можно играться с оператором OR вместо AND, но это уровень 2, тебе не надо # ещё есть кейз "вне моего промежутка", который можно получить AND двух имеющихся или NOT для "внутри промежутка" # дай промежутки, которые помещаются в мои рамки # '2022-01-02 00:00:00' < date_from < date_to < '2022-01-04 00:00:00' # |----------| # |----| # AND `date_from` >'2022-01-02 00:00:00' # AND `date_to` < '2022-01-04 00:00:00' # вернуло бы [ '2022-01-03 00:00:00', '2022-01-03 00:00:00' ] # дай промежутки, которые пересекаются с моим только началом # '2022-01-02 00:00:00' < date_from < '2022-01-04 00:00:00' < date_to # |------| # |------| # AND `date_from` >'2022-01-02 00:00:00' # AND `date_to` > '2022-01-04 00:00:00' # вернуло бы [ '2022-01-03 00:00:00', '2022-01-05 00:00:00' ] # дай промежутки, которые пересекаются с моим только концом # date_from < '2022-01-02 00:00:00' < date_to < '2022-01-04 00:00:00' # |------| # |------| # AND `date_from` < '2022-01-02 00:00:00' # AND `date_to` < '2022-01-04 00:00:00' # вернуло бы [ '2022-01-01 00:00:00', '2022-01-03 00:00:00' ] # дай промежутки, которые шире моих рамок (рамка внутри промежутка и потому пересечения нет, пересечение целиком) # date_from < '2022-01-02 00:00:00' < '2022-01-04 00:00:00' < date_to # |----| # |----------| # AND `date_from` < '2022-01-02 00:00:00' # AND `date_to` >'2022-01-04 00:00:00' # вернуло бы [ '2022-01-01 00:00:00', '2022-01-05 00:00:00' ]

Чаще всего задача звучит "найдите все пересечения сразу", чтобы убедится, что туда можно что-то еще добавить и оно не закосячит потом. Поэтому и начинают играться с OR чтобы не писать NOT ( AND / AND / AND / AND )

Источник

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