使用三元运算符的条件

时间:2013-07-01 18:12:20

标签: php

我在这个论坛中找到了这个代码,我正在使用它。它的工作正常,但在法语中,月份是mois,所以它已经有了s。两个ss没有意义。

如果一个单词已经以一个单词结尾,如何阻止它插入? 感谢

function time_elapsed_string($ptime)
 {
    $etime = time() - $ptime;

    if ($etime < 1)
   {
    return '0 seconds';
   }

  $a = array( 12 * 30 * 24 * 60 * 60  =>  'an',
            30 * 24 * 60 * 60       =>  'mois',
            24 * 60 * 60            =>  'jour',
            60 * 60                 =>  'heure',
            60                      =>  'minute',
            1                       =>  'seconde'
            );

  foreach ($a as $secs => $str)
 {
    $d = $etime / $secs;
    if ($d >= 1)
    {
        $r = round($d);
        return $r . ' ' . $str . ($r > 1 ? 's' : '') . ' ago';
    }
 }

}

1 个答案:

答案 0 :(得分:5)

您可以使用子字符串长度为-1的substr()来获取字符串的最后一个字符。所以只需添加一个条件来检查单词是否以“s”结尾:

return $r . ' ' . $str . ($r > 1 && substr($str, -1) != 's' ? 's' : '') . ' ago';