2016-11-07 3 views
-1

У меня есть функция времени в php, которую я использую для возврата, если пользователь подключен к сети или когда пользователь был в последний раз замечен.Как исправить ошибки Timeago

function tj_online_last($ptime) { 
    $estimate_time = time() - strtotime($ptime); 
    // if time diff is less than 1 minute then user is online 
    if ($estimate_time < 60) { 
     return 'online'; 
    } 
    $condition = array(
       12 * 30 * 24 * 60 * 60 => 'year', 
       30 * 24 * 60 * 60  => 'month', 
       24 * 60 * 60    => 'day', 
       60 * 60     => 'hour', 
       60      => 'minute', 
       1      => 'second', 
    ); 
    foreach($condition as $secs => $str) { 
     $d = $estimate_time/$secs; 
     if ($d >= 1) { 
      $r = round($d); 
      return $r.' '.$str.($r > 1 ? 's' : '').' ago'; 
     } 
    } 
} 

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

+0

Тогда 'возвращение«никогда»; ', что проблема? –

ответ

0

Попробуйте это ... Когда пользователь первый раз Войти, то это последняя запись является недействительным, так что вы должны проверить состояние if последняя дата пуста thenreturn 'never';

function tj_online_last($ptime) { 
    if(strtotime($ptime) <= 0){ 
     return 'never'; 
    } 
    $estimate_time = time() - strtotime($ptime); 
    // if time diff is less than 1 minute then user is online 
    if ($estimate_time < 60) { 
     return 'online'; 
    } 
    $condition = array(
       12 * 30 * 24 * 60 * 60 => 'year', 
       30 * 24 * 60 * 60  => 'month', 
       24 * 60 * 60    => 'day', 
       60 * 60     => 'hour', 
       60      => 'minute', 
       1      => 'second', 
    ); 
    foreach($condition as $secs => $str) { 
     $d = $estimate_time/$secs; 
     if ($d >= 1) { 
      $r = round($d); 
      return $r.' '.$str.($r > 1 ? 's' : '').' ago'; 
     } 
    } 
} 
+0

Пожалуйста, подробно объясните ответ, как ваш код будет работать и где он совершил ошибку. –

+0

Спасибо, сэр, только то, что мне нужно, работало, как ожидалось. Я так и не подумал –

+0

Ваш прием ..;) –

Смежные вопросы