2016-08-11 15 views
0
<?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-statement, похоже, выполняется независимо от того, что его условие является ложным и сбрасывает все обратно до нуля.PHP-файл if-statement все еще выполняется, даже если false

+4

Нет, 'filesize' [возвращает логическое значение false] (http://php.net/filesize), а вы делаете' if (filesize ("seat.txt") == 0) '. Вы выполняете свободное сравнение, которое будет равно «true», как в 'false == 0', которое в этом контексте является« истинным ». Для строгого сравнения типов вам нужно использовать '==='. Поскольку в руководстве указано '$ a === $ b \t Идентично \t ИСТИНА, если $ a равно $ b, и они одного типа. «Часть того же самого типа здесь очень важна. – Andrew

+0

на самом деле ссылка, которую вы указали, говорит, что она возвращает 'int' –

+0

_Выполняет размер файла в байтах или FALSE (и генерирует ошибку уровня E_WARNING) в случае ошибки._ – syck

ответ

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

Использование a или a+, если вы хотите, чтобы append справа от file или r+, если вы хотите, чтобы право от начала

+0

Замените его на r +, и он работает так, как планировалось. Спасибо. –

+0

@Guy Fieri Добро пожаловать, если он сработает, отметьте его своим ответом :) – user1234

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