Home  >  Article  >  Backend Development  >  PHP问号表达式的用法

PHP问号表达式的用法

WBOY
WBOYOriginal
2016-06-06 20:09:021991browse

现有一变量$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 函数。
可以使用临时变量解决这个问题

<code class="php">$temp = strtotime($time);
$time = $temp ? $temp : $time;</code>

如果是 PHP 5.3 以上,还可以使用

<code class="php">$time = strtotime($time) ?: $time;</code>

你的问题有个地方我不确定,如果是字符串时间戳,要求格式一定是 Y-m-d H:i:s 格式么?

<code class="php">
$time = is_numeric($time) ? $time : strtotime($time);
</code>

其实也不需要三元操作符,直接使用&&就可以了

<code>!is_numberic($time) && $time = strtotime($time); </code>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn