2017-02-18 1 views
0

時間の前の形式を示す関数のヒントが必要です。 私のデータベースには、タイムスタンプとしてストロングされた時間があります。タイムスタンプとして日付を持つユーザーからのコメントがあります。この日付は前に変換する必要があります。私は機能を持っていますが、すべてのコメントについて呼び出すことはできません。 1つのコメントに対して1回だけ働いています。誰かが助けることができますか?php time ago関数

これは

function humanTiming($time) 
{ 

$time = time() - $time; // to get the time since that moment 
$time = ($time<1)? 1 : $time; 
$tokens = array (
    31536000 => 'year', 
    2592000 => 'month', 
    604800 => 'week', 
    86400 => 'day', 
    3600 => 'hour', 
    60 => 'minute', 
    1 => 'second' 
); 

foreach ($tokens as $unit => $text) { 
    if ($time < $unit) continue; 
    $numberOfUnits = floor($time/$unit); 
    return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':''); 
} 

} 
+0

'humanTiming()'に渡す前にタイムスタンプをエポックに変換していますか? –

+0

いいえ、@DanielSmith –

+0

はい@ GautamKrishnaRは正しいですが、その機能は2つのコメントなどで再宣言できません。 –

答えて

0

私の関数であるこれはおそらく重複しているが、それはあなたのコードに問題が何であるかが表示されません閉じます。

return statementは、関数から渡された値をすぐに返し、関数の実行を終了します。だから、あなたはforeachループの最初の実行を乗り越えることはありません。おそらく、あなたがやりたいことは、あなたがループ内で文字列を構築し、それを返し、このようなものです:

$ret = ""; 
foreach ($tokens as $unit => $text) { 
    if ($time < $unit) continue; 
    $numberOfUnits = floor($time/$unit); 
    $ret .= $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':''); 
} 
return $ret; 

あなたのコードが動作するかどう私は実際にチェックしていなかったが、これは最も重要な点ですあなたの問題の

関連する問題