2016-08-18 6 views
-2
$testarray['player1'] = $player1Plays; 
$testarray['player2'] = $player2Plays; 
$testarray['result'] = $result; 

print_r ($testarray); 

$yoyo = serialize ($testarray); 

$file = 'prevdata.dat'; 
fopen ($file, 'w'); 
file_put_contents($file, trim($yoyo) . PHP_EOL, FILE_APPEND); 

Я делаю маленькую игрушку для скалы, бумаги, ножниц для класса и должен сохранять каждое перемещение и результаты в файл. Это то, что у меня есть до сих пор, и оно работает, чтобы сериализовать данные и сохранить их в файле, но каждый раз, когда я снова играю в игру, он записывает данные, находящиеся в этом файле (я думал, что «FILE_APPEND» должен был добавить) , Полный код приведен здесь https://eval.in/624620PHP - Каждый раз, когда я сохраняю файл, старые данные перезаписываются

+2

Почему вы используете как Еореп и file_put_contents? –

+5

['fopen': * 'w' Открыт только для записи; поместите указатель файла в начало файла и обрезайте файл до нулевой длины. *] (http://php.net/manual/en/function.fopen.php). –

+0

Комментарий от @PaulCrovella - это ответ. –

ответ

1

Изменить

$file = 'prevdata.dat'; 
fopen ($file, 'w'); 
file_put_contents($file, trim($yoyo) . PHP_EOL, FILE_APPEND); 

либо

$fp = fopen('prevdata.dat', 'a'); fwrite($fp, trim($yoyo)); 

или

file_put_contents('prevdata.dat', trim($yoyo), FILE_APPEND); 
+1

Было бы лучше, если бы вы объяснили, почему, а не просто дают фрагменты кода. –

+0

Я предполагаю, что, когда я возился с «file_put_contents», я добавил fopen в свой файл, пытаясь заставить его работать, прежде чем добавлять append в «put_contents». после удаления линии fopen код работал нормально. – Baker2795

+0

@PHPglue есть способ установить ограничение на количество предыдущих игр, которые я хочу сохранить в файле? Скажем, я только хотел записать 25 игр, есть ли способ перезаписать самые старые данные? – Baker2795

0

Важно использовать правильный режим функции fopen. Вы должны поместить указатель (вы можете думать об этом как пишущего голову) в конце файла, как это:

fopen($file, 'a'); 

Посмотрите на документацию, чтобы увидеть все возможные режимы.

http://php.net/manual/en/function.fopen.php

+0

Поскольку file_put_contents используется, fopen вообще не должен присутствовать, независимо от режима. –

+0

Вы правы, ответ PHPglue дает больше чувства. – mgadrat