PHP问号表达式的用法(正则表达式中问号)
現有一變量$time, 可能是時間類型的,可能是一個Unix時間戳,即 $time = '2011-12-25 00:11:20'; 或者 $time = 1324742400.
現在我想把統一做一個轉換,即如果是時間類型的,就把它用strtotime($time)函數轉換成Unix時間戳,如果不是同樣用這個函數strtotime($time)會返回false.
那么我用問號表達式$time = strtotime($time) ? strtotime($time) : $time;能否實現這個需求,有沒有更簡潔的形式啊,總感覺別人不是這么寫的呢?
回復內容:
現有一變量$time, 可能是時間類型的,可能是一個Unix時間戳,即 $time = '2011-12-25 00:11:20'; 或者 $time = 1324742400.
現在我想把統一做一個轉換,即如果是時間類型的,就把它用strtotime($time)函數轉換成Unix時間戳,如果不是同樣用這個函數strtotime($time)會返回false.
那么我用問號表達式$time = strtotime($time) ? strtotime($time) : $time;能否實現這個需求,有沒有更簡潔的形式啊,總感覺別人不是這么寫的呢?
別人不這么寫主要原因估計是,你這么寫如果 time 的確是時間格式的話,會執行兩次 strtotime 函數。
可以使用臨時變量解決這個問題
$temp = strtotime($time);
$time = $temp ? $temp : $time;
登錄后復制
如果是 PHP 5.3 以上,還可以使用
$time = strtotime($time) ?: $time;
登錄后復制
你的問題有個地方我不確定,如果是字符串時間戳,要求格式一定是 Y-m-d H:i:s 格式么?
$time = is_numeric($time) ? $time : strtotime($time);
登錄后復制
其實也不需要三元操作符,直接使用&&就可以了
!is_numberic($time) && $time = strtotime($time);
登錄后復制
總結
以上是生活随笔為你收集整理的PHP问号表达式的用法(正则表达式中问号)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字节国际化TnS算法实习的碎碎念
- 下一篇: Feign源码解析:初始化过程(二)