2016-08-11 2 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コードはスクリプトセクションの先頭にあります。 seats.txtファイルは、空になった座席を表すために最初はゼロで満ちていて、他の機能によって座席はいっぱいになります(1で表されます)。私はファイルに書き込むために1を得ることができますが、ページをリロードするとすぐに、ifステートメントは条件が偽であっても実行されているように見え、すべてがゼロにリセットされます。PHPファイルサイズif文が偽であっても実行されます

+4

'(if(filesize(" seats.txt ")== 0)'を実行している間は、 'filesize' [falseを返す](http://php.net/filesize)です。あなたは偽の比較をしています。これは 'false == 0'のように' true'と同じになります。この文脈では 'true'です。厳密な型の比較には '==='を使う必要があります。マニュアルで '$ a === $ b \tが同じであること\t $ aが$ bと等しい場合はTRUE、それらは同じタイプです。 'ここの同じタイプの部分は非常に重要です。 – Andrew

+0

実際にあなたが提供したリンクは、 'int'を返します。 –

+0

_ファイルのサイズをバイト単位で返します。エラーの場合はFALSE(レベルE_WARNINGのエラーを生成します)。 – syck

答えて

2

理由は、あなたが右にしたい場合は、fileまたはr+の右側にappendにしたいのであれば、すべての時間があなたのfileblank

使用aa+を取得し、このw mode

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

によるものです〜から始まる

+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は、文句を言うでしょうタイプミス)。

関連する問題