例如,我几行记录的学生信息很少:
AbuBaka Male
MaryLu Female
WongAhKao Male
如果我想删除文件中的MaryLu Female
记录,并变为:
AbuBaka Male
WongAhKao Male
怎么做?如果我使用W
或W+
,则所有数据都将被删除。
答案 0 :(得分:1)
由于只有值,您可以使用file()。
示例:
<?php
// Read all lines from a file to array
$users = file('users.txt',FILE_IGNORE_NEW_LINES);
// Search for the array id of the line we want to be deleted
$idToDelete = array_search('MaryLu Female',$users);
// Check if we have a result
if($idToDelete !== false){
// If so, delete the array entry
unset($users[$idToDelete]);
}
// Finally, put the remaining entries back into the file,
// overwriting any existing content.
file_put_contents("users.txt",implode(PHP_EOL,$users));
但请注意,将数据存储在文本文件中并不是一个好主意。一个原因是,一旦两个用户使用您的脚本(假设它在Web服务器上运行),那么保存最后一个的用户就会获胜。
数据库管理系统,如MySQL,MariaDB或PostgreSQL,甚至是SQLite(构建于php afaik),旨在规避在文本文件中存储数据时遇到的问题。
但由于我不知道你的用例,这只是一个警告,也许你的用例非常适合在文本文件中存储名称。 :)
答案 1 :(得分:0)
试试这个:
1.txt里面有:
AbuBaka Male
MaryLu Female
WongAhKao Male
PHP代码:
<?php
$delete = 'MaryLu Female';
$array = file('1.txt', FILE_IGNORE_NEW_LINES);
$id = array_search($delete, $array);
array_splice($array, $id, 1);
$string = implode("\n", $array);
file_put_contents('2.txt', $string);
?>
在2.txt中你会看到:
AbuBaka Male
WongAhKao Male