2012-08-02 182 views
1

我试图在每次刷新页面时将数据写入php文件。下面的代码成功写入文件,但是,第一次重写后文件内容保持不变,即使每次刷新页面时用于写入文件的数组中包含的数据都不相同。使用fwrite替换文件内容

我的问题是:如何重写或替换已存在的.php文件的内容?

我试着用unlink('../html/freesample2.php');来解决这个问题,通过删除'书写'文件然后重新创建它,但它没有帮助。

我欣赏任何建议。

//Create variable for file I want to write to 
//second parameter 'a' stands for APPEND 
$f = fopen('../html/freesample2.php', 'a') or die('fopen failed'); 

$php_script= '<?php $free_sample_array_new = Array(); $free_sample_array_new[] = '.$free_sample_array[0].'; $free_sample_array_new[] = '.$free_sample_array[1].'; ?>'; 

fwrite($f, $php_script); 

fclose($f); 
+0

你对文件有权限吗?尝试取消链接文件并停止执行,然后查看文件是否被删除或仍然存在。或者尝试使用file_exists或is_file来查看文件是否存在..要创建一个绝对路径,您可以使用函数realpath() – alphanyx 2012-08-02 16:23:51

+0

正如我在我的文章中所说,该文件已成功创建,这不是问题所在。问题是替换已创建文件的文件内容。 – AnchovyLegend 2012-08-02 16:23:53

+0

是使用取消链接后文件被删除 – AnchovyLegend 2012-08-02 16:24:19

回答

5

如果你想打开一个只写一个文件,你可以使用'w'作为fopen()的访问模式。如果文件不存在,则会创建该文件,或者将其截断为空,并且可以将其写入,就好像它是新的一样。

或者,您可以使用file_put_contents使操作成为一个打字符。

侧面说明:如果生成与文字值的PHP代码,看看到var_export功能,能够大大简化它(与第二,可选参数)。

+0

我试着'W'而不是'A',它不工作...文件内容保持不变。 – AnchovyLegend 2012-08-02 16:27:27

+0

@MHZ,请阅读完整答案。 – Adi 2012-08-02 16:27:45

+0

@Adnan我没有... – AnchovyLegend 2012-08-02 16:28:18

0

运行此代码并检查每次刷新后,freesample2.php是否有新值?

<? 
$free_sample_array = array(rand()); 
$f = fopen('../html/freesample2.php', 'w') or die('fopen failed'); 
$php_script= '<?php $free_sample_array_new = Array(); $free_sample_array_new[] = '.$free_sample_array[0].'; ?>'; 
fwrite($f, $php_script); 
fclose($f); 
?> 
+0

我使用print_r打印出每个刷新都是唯一的free_smaple _array数组内容,所以这不是问题。不过谢谢。 – AnchovyLegend 2012-08-02 16:29:45

+0

当你在追加打开时,是否有新行(即使它们包含相同的数据)被写入文件的末尾? – raidenace 2012-08-02 16:37:39

+0

不,他们不是。 – AnchovyLegend 2012-08-02 16:42:27

0

如果您使用的是Windows,你必须关闭csv文件(如果打开桌面上),用“W”模式下写它。