PHP filesize if-statement即使在false时仍然执行

时间:2016-08-11 11:16:55

标签: php file-writing

<?php
$seatsArray = array();
$myFile = fopen("seats.txt", "w") or die("Unable to Open File!");
if(filesize("seats.txt") == 0) {
    for($x = 0; $x < 10; $x++) {
        fwrite($myFile, "0\n");
    }
}   
$seatsArray = file("seats.txt", FILE_IGNORE_NEW_LINES);
fclose($myFile);
?>

var array = [<?php echo '"'.implode('","', $seatsArray ).'"' ?>];

这个PHP代码位于我的脚本部分的顶部。 seat.txt文件最初为零,表示航班上的空座位,通过其他功能,座位将填满(以1表示)。我可以让1s写入文件但是一旦我重新加载页面,if语句似乎执行而不管它的条件是否为假并将所有内容重置为零。

2 个答案:

答案 0 :(得分:2)

原因是w mode

w- (Write only. Opens and clears the contents of file; or creates a new file if it doesn't exist)

每次file获得blank

时都是如此

如果您想在aa+右侧append,如果您想要开始

,请使用filer+

答案 1 :(得分:1)

我不确定我是否理解正确,但我认为如果该文件不存在,您只想编写该文件:

<?php
$seatsArray = array();
if(!file_exists("seats.txt") || filesize("seats.txt") == 0) {
    $myFile = fopen("seats.txt", "w") or die("Unable to Open File!");
    for($x = 0; $x < 10; $x++) {
        fwrite($myFile, "0\n");
    }
    fclose($myFile);
}   
$seatsArray = file("seats.txt", FILE_IGNORE_NEW_LINES);
?>

var array = [<?php echo '"'.implode('","', $seatsArray ).'"' ?>];

另外,我建议将文件名放入一个常量,这样可以降低拼写错误的风险(因此,如果在拼写错误的情况下遇到未定义的常量,PHP会抱怨)。