1, b=>2, c=>3]. * @param string $dataString * @return array */ public static function dataStringToArray(string $dataString): array { if (mb_substr($dataString, -1) === '|') { $dataString = rtrim($dataString, '|'); } $arr = json_decode(str_replace(['=', '|'], ['":', ',"'], '{"' . $dataString . '}'), true); return $arr ?: []; } /** Превращает массив [a=>1, b=>2, c=>3] в строку data ('a=1|b=2|c=3') для БД. * @param array $dataArray * @return string */ public static function arrayToDataString(array $dataArray): string { $str = json_encode($dataArray); return $str ? str_replace(['":', ',"', '{"', '}'], ['=', '|'], $str) : ''; } /** Превращает количество секунд в человекопонятное Х мес. Х дн. Х ч. Х мин. Х сек., * используемое обычно для отображения игровых таймаутов. * @param int|string $seconds * @return string */ public static function secondsToTimeout($seconds): string { $seconds = (int)$seconds; $time = new \DateTime(); $time->setTimestamp($seconds); $sec = intval($time->format('s')); $min = intval($time->format('i')); $hr = intval($time->format('G')); $day = intval($time->format('j')); $month = intval($time->format('n')); $timeout = ''; if ($month > 1) { $timeout .= $month . ' мес. '; } if ($day > 1) { $timeout .= $day . ' дн. '; } if ($hr) { $timeout .= $hr . ' ч. '; } if ($sec && !$min) { $timeout .= $sec . ' сек. '; } elseif ($min) { $timeout .= $min . ' мин. '; } return $timeout; } }