如果在if和if语句中使用相同的函数,它是否会被调用两次?

时间:2014-11-19 18:49:55

标签: php if-statement

以下构造是否两次访问数据库?

$output = access_database() ? access_database() : NULL;

我是否应该做以下事情?

$result = access_database();
$output = $result ? $result : NULL;

2 个答案:

答案 0 :(得分:1)

是。使用这个PHP语法糖来避免这种情况。

$output = access_database() ? : NULL;

答案 1 :(得分:1)

执行此操作时:$result = access_database(); result接收执行函数的值,而不是访问时将执行的引用。

所以,是的,以下行将执行两次你的函数:

$output = access_database() ? access_database() : NULL;

一个选项是使用elvis operator(php版本> = 5.3):

$output = access_database() ?: NULL;