запись в файл — PHP-выражение if-размера файла все еще выполняется, даже когда false

<?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 с). Я могу получить 1 для записи в файл, но как только я перезагружаю страницу, оператор if, кажется, выполняется независимо от того, что его условие ложно и сбрасывает все обратно в ноль.

0

Решение

Причина в том, что это w mode

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

Так что каждый раз, когда ваш file получает blank

использование a или же a+ если хотите append справа от file или же r+ если вы хотите прямо с начала

2

Другие решения

Я не уверен, правильно ли я вас понимаю, но думаю, что вы хотите написать файл, только если он не существует:

<?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 будет жаловаться, если в случае опечатки встретит неопределенную константу).

1

По вопросам рекламы [email protected]