我有一个名为 abFormStats.txt
的文件,目前看起来是这样的:
A|0
B|0
我有一个 AJAX 调用触发到具有当前“拆分”类型(A 或 B)的处理页面。我知道如何打开文件并写入文件,但我目前不确定如何根据使用的“拆分”来增加特定行的值。
这是我用来写入文件的代码,就像我说的那样,这只是覆盖了文件中当前的内容,这根本不是我想要的:
$fp = fopen('abFormStats.txt', 'c+');
flock($fp, LOCK_EX);
$count = (int)fread($fp, filesize('abFormStats.txt'));
ftruncate($fp, 0);
fseek($fp, 0);
fwrite($fp, $count + 1);
flock($fp, LOCK_UN);
fclose($fp);
不确定你们是否需要它,但这是当前的 AJAX 调用:
var split = 'A';
$.ajax({
type: 'POST',
url: "updateStats.php",
data: {
"splitType": split
},
success: function(result){
console.log(result);
}
});
最佳答案
这样的事情怎么样:
$filename = 'abFormStats.txt';
$lines = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as &$line) {
list($type, $count) = explode('|', $line, 2);
if ($type == $_POST['splitType']) {
$count++;
}
$line = "$type|$count";
}
if (file_put_contents($filename, implode("\n", $lines), LOCK_EX)) {
// Success!
} else {
// Error (lock, file permissions etc)
http_response_code(503);
}
如何将失败发送回客户端取决于您(正文中的错误消息、HTTP 状态代码等),但如果您使用上述 HTTP 状态代码,则可以使用 jQuery 的成功/错误回调来区分.
关于PHP 增加特定的行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32475087/