Полезные функции php которые могут пригодится

Есть у меня заметка о полезных командах в терминале Linux, вот решил завести еще заметку о полезных функций php, буду ее постоянно пополнять.


Вот так можно вычислить разницу во времени, а именно сколько дней, часов, минут, секунд между двух промежутками времени и вывести в удобном формате.
$start = new DateTime("12:15");
$end = new DateTime("15:13");
$interval = $start->diff($end)->format("%H:%I:%S");
echo $interval;
На выводе мы получим 02:58:00, если в формате вывода указать %i то получим минуты без ведущего нуля.

Перевести секунды в часы минуты секунды можно при помощи gmdate
gmdate('H:i:s', 999);
На выходе получим 00:16:39

Если нам нужно сохранить полученные данные для дальнейшего импорта можно использовать функцию var_export, допустим у нас есть массив $country, записать его в файл можно следующим образом
file_put_contents('import.php','<?php $country = ' . var_export($country, true) . ';');
Для использования подключаем файл require или include и пользуемся $country.

Можно еще так
file_put_contents('import.php','<?php return ' . var_export($country, true) . ';');
Тогда при подключении сразу будет возвращен массив.

Так же можно использовать serialize и unserialize
Записать данные в файл
file_put_contents($filename, serialize($country))
Получить
$country = unserialize(file_get_contents($filename));
Сортировка массива по значениям ключей
php 7.1
usort($array, function ($item1, $item2) {
    return $item2['key'] <=> $item1['key'];
});
php 5.6
usort($events, function ($a, $b) {
    if ($a['sort'] == $b['sort']) {
        return 0;
    }
    return ($a['sort'] < $b['sort']) ? -1 : 1;
 });

Перевод строчного времени 14 января 2019 или 14 янв 2019 если убрать пробелы 14января2019 то работать тоже будет в Unix Time при помощи ICU
$offset = date_create()->getOffset() / -3600;
$timezone = 'Etc/GMT' . ($offset > 0 ? '+'.$offset : (string)$offset);
$fmt = new IntlDateFormatter(
    'ru_RU',
    IntlDateFormatter::SHORT,
    IntlDateFormatter::SHORT,
    $timezone,
    IntlDateFormatter::GREGORIAN,
    'd MMMM y'
);

Комментарии ()

    Есть вопрос или предложение пиши в Telegram @cloudsv

    Прямой эфир

    cloudsv 24 октября 2018, 00:27
    О жизни Обновление Scala Rider G4 0
    cloudsv 21 октября 2018, 23:16
    Arch Linux Памятка по основным утилитам Linux 0
    cloudsv 01 июня 2018, 01:39
    Telegram Настройка прокси mtproto для Telegram 28
    cloudsv 22 января 2018, 21:59
    Web Локальное зеркало обновлений Dr.web 0
    cloudsv 03 октября 2017, 10:55
    Web Пароль от резервной копии Bitrix 2