关于 PHP fopen()函数的问题

<?php$file=fopen("c:\aaa.txt","r");echo$file;//输出Resourceid#3if(!$file){echo("Failedt... <?php
$file = fopen("c:\aaa.txt","r");
echo $file; //输出 Resource id #3
if(!$file)
{
echo ("Failed to open the file");
}else{
echo ("Successfully opened the file!");
} // 这里我就 不解了。实在是 不知道为什么。。。???

fclose($file);
echo $file; //这里 还可以 输出。。Resource id #3。。。都fclose了,为什么还能输出结果。。。。
?>
if(!$file)就是这里 不明白。。。$file它现在是“真”可是前面加了个“!”就变成“假”了 那么就应该输出 “Failed to open the file” 才对 可是为什么 真正输出的结果是("Successfully opened the file!");
这个呢??? 求助啊~~~现在 一片混乱!!~~~
展开
 我来答
margox
2012-01-04 · TA获得超过174个赞
知道小有建树答主
回答量:178
采纳率:33%
帮助的人:133万
展开全部
假设有文件内容,那么$file就是1,否则就是0
那么if的第一个分支,如果有文件,那么!$file就是0了,则第一个分支不会成立,会直接转到else里面
如果没有文件,那么!$file = !0 = 1;那么第一个分支就会成立,直接输出打开文件失败

LZ头痛的原因就在于,把逻辑的真假和文件的有否弄混淆了
百度网友9308069
2012-01-04 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1937万
展开全部
if(!$file)是一种不太严肃的略写,在c系语言包括php中,0代表假。
空值null约等于0,也就是约等于假。约等于==和全等===不一样。

if($file) 即 $file不为假(不为0)时,条件为真成立
if(!$file)在以上的条件上取反,变成$file为假(为0)时条件成立
fopen在失败时返回FALSE假值。
所以可以if(!$file)这么写
严格的写法应该是
if($file!==FALSE)使用!==类型全等比较。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
achenph
2012-01-05
知道答主
回答量:28
采纳率:0%
帮助的人:22.2万
展开全部
这个不干if ! 什么事。把fopen的返回值给搞清楚了就成。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a9e8db7ee
2012-01-04 · 超过16用户采纳过TA的回答
知道答主
回答量:102
采纳率:0%
帮助的人:47.4万
展开全部
if判断 条件为真就会执行代码 你上面的!$file现在是为假 所以就会执行else里的代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-01-04
展开全部
估计是你理解错误了,如果$file为真那么直接执行else{
echo ("Successfully opened the file!");
} // 这里我就 不解了。实在是 不知道为什么。。。???

如果为假才执行if(!$file)
{
echo ("Failed to open the file");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式