Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带有c/c+;模式_Php_Fread - Fatal编程技术网

Php 带有c/c+;模式

Php 带有c/c+;模式,php,fread,Php,Fread,就我所理解的c/c+模式而言,我期望类似于“a/a+模式”的行为,因此文件不应该被截断,任何fwrite()结果都应该在现有文件的前面 事实上,该文件似乎无论如何都会被截断,因为该文件始终只包含最后一个fwrite()内容 这是我的PHP版本(7.0)中可能存在的错误,还是我误解了什么 <?php $fp = fopen($fpath,'c+'); fwrite($fp, date("H:i:s")." test\n"); fclose($fp); 是什么让你认为这应该表现不同?根据文档

就我所理解的c/c+模式而言,我期望类似于“a/a+模式”的行为,因此文件不应该被截断,任何fwrite()结果都应该在现有文件的前面

事实上,该文件似乎无论如何都会被截断,因为该文件始终只包含最后一个fwrite()内容

这是我的PHP版本(7.0)中可能存在的错误,还是我误解了什么

<?php
$fp = fopen($fpath,'c+');
fwrite($fp, date("H:i:s")." test\n");
fclose($fp);

是什么让你认为这应该表现不同?根据文档,使用
c
将指针“定位在文件的开头”。从该特定位置开始写入时,您总是会覆盖该文件中已经存在的任何内容

是什么让您认为这应该表现出不同的行为?根据文档,使用
c
将指针“定位在文件的开头”。从该特定位置开始写入时,您将始终覆盖该文件中已存在的内容

可能是对所述内容的一个小补充:

<?php 
/* file test.txt contains string(4): 'test' */
$fp = fopen('test.txt','c+');
fclose($fp);

文件
test.txt
现在包含:
best
,文件指针位于文件的开头,只覆盖原始文件中的第一个字符-
test
已成为
best
可能是对前面所说内容的一个小小补充:

<?php 
/* file test.txt contains string(4): 'test' */
$fp = fopen('test.txt','c+');
fclose($fp);

文件
test.txt
现在包含:
best
,文件指针位于文件开头,仅覆盖原始文件中的第一个字符-
test
已成为
best

打开时不会截断文件。但你凭什么认为它会在文件前出现?即使没有指定(据我所知),
fwrite
也可能会覆盖数据。一个人在中对此进行了评论。这并不是对你问题的回答,但如果你只是想添加内容,你可以使用
file\u put\u contents($file,$content,file\u append)取而代之。更短更简单。@fredrik谢谢你,这就解释了一切@MagnusEriksson这绝对是目前最好的解决方案。谢谢它可以使用标志
LOCK\u EX
进行锁定。因此,只需同时使用
文件|附加|锁定_EX
。它不会在打开时截断文件。但你凭什么认为它会在文件前出现?即使没有指定(据我所知),
fwrite
也可能会覆盖数据。一个人在中对此进行了评论。这并不是对你问题的回答,但如果你只是想添加内容,你可以使用
file\u put\u contents($file,$content,file\u append)取而代之。更短更简单。@fredrik谢谢你,这就解释了一切@MagnusEriksson这绝对是目前最好的解决方案。谢谢它可以使用标志
LOCK\u EX
进行锁定。因此,只需使用
FILE_APPEND | LOCK_EX
。非常感谢。我关注的是“模式”,完全忽略了fwrite()的行为。非常感谢。我专注于“模式”,完全忽略了fwrite()的行为。