PHP调用方法并同时检查返回

时间:2017-09-19 01:48:02

标签: php if-statement fclose

我是PHP的新手,并且有一个非常简单的问题。我已经看到人们在if语句的条件下调用并返回语句。例如

if ($connection = @ssh2_connect($host, 22)) { do something };

如果我没错,这将检查返回布尔值以及创建连接。这对一切都有效吗?更具体地说,对于fclose(),我想知道我是否做了类似的事情:

if (fclose($stream)) { do something };  

实际上将关闭它的布尔返回值并关闭流。或者我必须这样做吗?

...
fclose($stream);
if (fclose($stream)) { do something };  
...

2 个答案:

答案 0 :(得分:2)

你可以这样做:

if (fclose($stream)) { do something };  

它会起作用,但可能不像你想的那样。首先关闭流,然后通过if语句检查该函数的结果,即布尔值。

以另一种方式看待它:if语句仅关注TRUEFALSE,因此它会评估括号内的任何内容。如果这恰好是一个关闭流的函数,那就这样吧。

请注意,TRUE只是非FALSE的所有内容,FALSE也可以是零(0'0'),{{1 },''

答案 1 :(得分:0)

一旦函数返回一个与bool(fclose返回布尔值)相当的值,它就会工作,请参阅herehere

// this doesn't make much sense, because you already closed a stream
fclose($stream); //return true
if (fclose($stream)) { // will return false because resource already closed
    // do something 
};