Php 在if语句条件下使用语句的后果

Php 在if语句条件下使用语句的后果,php,if-statement,Php,If Statement,这可能是一个显而易见的问题,但我还没有找到答案 如果我检查一个函数是否工作,我会将它置于if()条件下,如下所示: 如果(!fopen($filename,“w”))打印“未找到文件” 但是它能打开文件吗?它会抹掉它吗?(模式“w”会导致这种情况。) 谢谢 是的,if语句中的函数将按原样执行。w模式打开文件进行写入,但不会擦除它。然而,如果你问函数是否真的被调用了,它是。但如果返回“未找到文件”,则不会返回true@RoyalBg您可以用这种方式打开不存在的文件,因此错误消息将是错误的。@Mar

这可能是一个显而易见的问题,但我还没有找到答案

如果我检查一个函数是否工作,我会将它置于if()条件下,如下所示:

如果(!fopen($filename,“w”))打印“未找到文件”

但是它能打开文件吗?它会抹掉它吗?(模式“w”会导致这种情况。)


谢谢

是的,
if
语句中的函数将按原样执行。

w
模式打开文件进行写入,但不会擦除它。然而,如果你问函数是否真的被调用了,它是。但如果返回“未找到文件”,则不会返回true@RoyalBg您可以用这种方式打开不存在的文件,因此错误消息将是错误的。@MarcelKorpel当然,这就是为什么我说函数由于某种原因返回false,而不是真的找不到文件:)错误消息应该更改,或者要检查是否未找到,请使用
文件\u exists()
请不要进入不必要的详细信息。我编了一个代码,很抱歉不正确。我只是想知道这种情况下的函数是否有其正常后果。您还可以使用短路求值:
fopen($filename,'w')| | echo“出了问题。”
。在Marc的答案上展开,这意味着如果
(fopen($filename,“w”)
的计算结果为
TRUE
,则
fopen
已成功执行。@sébastien更准确地说:
(!fopen($filename,“w”)
如果
fopen
成功执行,则将计算结果为
FALSE
。抱歉!你说得对,我更正了我的评论。该死的复制/粘贴!谢谢:)