@danyvasnafig

Почему после 2039 года не правильно сортирует даты?

Почему после 2039 года не правильно сортирует даты? Я ввожу дату и сообщение в инпуты и записываю в файл, после чего считываю файл и сортирую по датам, если вводить даты до 2039 года, все нормально,а после него почему-то считает не правильно. Даты, которые после 2039 записываются в начало файла, как-будто они самые маленькие.
<?php
$message = $_POST['message'];
$date = $_POST['date'];
$arr2 = [];
if (isset($_POST['go'])) {  
  $file = fopen("new.txt",'a+t');
  fwrite($file,"$date\n$message\n");
  fclose($file);  
  $arr = file ("new.txt");
  $newarr = array_chunk($arr,2);  
  
  function cmp($a, $b) 
{
 
    if ($a["0"] == $b["0"]) {
        return 0;
    }
    return (strtotime($a["0"]) < strtotime($b["0"])) ? -1 : 1;
  }
usort($newarr, "cmp");

  $f = fopen("two.txt",'w+t');
  for($z = 0; $z < count($newarr);$z++){   
  fwrite($f,$newarr[$z][0]);  
  fwrite($f,$newarr[$z][1]);        
}
fclose($f);
}
?>
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay

PHP_INT_MAX (integer)
Максимальное целое число, поддерживаемое данной сборкой PHP. Обычно это int(2147483647) в 32-битных системах и int(9223372036854775807) в 64-битных. Доступно с PHP 5.0.5 Обычно, PHP_INT_MIN === ~PHP_INT_MAX.

Скорее всего при преобразовании числа таймстамп упирается в верхнюю границу
сделайте
var_dump(PHP_INT_MAX);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы