【问题标题】:file_get_contents with empty file not working PHP带有空文件的 file_get_contents 无法正常工作 PHP
【发布时间】:2013-07-11 00:02:03
【问题描述】:

我尝试使用 PHP 的 file_get_contents 但它不起作用。

这是我的代码:

$filename = "/opt/gemel/test.txt";


if($filecontent = file_get_contents($filename)){

    $nom = fgets(STDIN);

    file_put_contents($filename, $nom, FILE_APPEND);
}
else
    echo "fail";

我的文件 test.txt 是空的。 (0 个八位字节)。他存在,但他是空的。

当我在其中写入内容时,我的代码运行良好,但如果他为空,我的代码回显“失败”

为什么,为什么他不能打开文件text.txt

【问题讨论】:

    标签: php file file-get-contents fgets


    【解决方案1】:

    函数file_get_contents 返回文件中的字符串。如果文件不包含数据,则file_get_contents 返回一个空字符串。如果你尝试var_dump('' == false);,你会得到true。因此,即使可以读取文件,文件的内容也会计算为 false

    如果你会使用这一行,你的代码应该可以工作:

    if($filecontent = file_get_contents($filename) !== false){
    

    编辑;链接到Comparison operators 的文档。

    【讨论】:

    • 你说 file_get_contents 返回一个空字符串,比如 false。所以这一行 file_get_contents($filename) !== false 应该是假的,因为 file_get_contents 返回假。那么为什么它可以工作而不是回显“失败”?
    • 这与变量的类型有关。如果 file_get_contents 无法打开文件,则返回 false(布尔值),如果打开空文件,则返回 ''(字符串)。三重字符比较 (!==) 还会检查变量的类型是否相同。请查看我的答案中的文档链接以获取更多信息。
    • 好吧,我没有掌握“类型”和“等于”之间的细微差别。谢谢你的解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    相关资源
    最近更新 更多