現有一變數$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);