在Stack Overflow上,许多答案使用
因此我想知道:
为了澄清我的问题:
以下是用于测试的脚本(它证明了
fopen($file, "rw+")
,但是手册中没有列出"rw+"
模式,只有"r+"
模式(或"w+"
模式)。因此我想知道:
"rw+"
模式是什么?fopen($file,
"rw+"
或"r+"
之间的区别是什么?因为没有关于"rw+"
模式的文档。
一种方法是考虑这些模式是“可加的”,但是我在fopen
手册页面中找不到任何结合模式的提及(此外,如果"w+"
已经使其可读,那么将"r"
与"w+"
相结合的意义是什么?)。但最重要的是,w+
模式截断文件,而rw+
不截断文件(因此,它们不能是可加的)。可能并没有rw+
模式,尽管Stack Overflow用户使用了它。也许它可以工作是因为解析器忽略了"w"字母,因为rw+
模式似乎等同于r+
?为了澄清我的问题:
"rw+"
模式是什么,也就是说它与其他模式有何区别?在评论中,我只收到两个回答:要么是告诉我检查文档(我已经检查过了),要么是错误的答案,称其等同于"w+"
(它并不是)。"w+"
截断文件,而"rw+"
则不会。以下是用于测试的脚本(它证明了
w+
截取了文件,但rw+
没有):<?php
$file = "somefile";
$fileOpened = fopen($file, "w");
fwrite($fileOpened, "0000000000000000000");
fclose($fileOpened);
$fileOpened = fopen($file, "rw+");
fwrite($fileOpened, "data");
fclose($fileOpened);
$fileOpened = fopen($file, "r");
$output = fgets($fileOpened);
echo "First, with 'rw+' mode:<br>".$output;
$fileOpened = fopen($file, "w+");
fwrite($fileOpened, "data");
fclose($fileOpened);
$fileOpened = fopen($file, "r");
$output = fgets($fileOpened);
echo "<br><br><br>Now with only 'w+' mode:<br>".$output;
?>
r
和w+
。这只是一个组合。 - M. Erikssonrw+
替换为w+
,我的代码就会崩溃,但是如果我将其替换为r+
,它就会像预期的那样正常工作。原因很简单:w+
截断文件,但rw+
不会,它的行为与r+
完全相同(不截断文件)。我对此进行了一些其他测试,但都是基本的东西,总是得到rw+
===r+
。 - flen