我需要打开一个文本文件(file.txt),其中包含以下格式的数据:
dave : 50lb : hlof
jimmy : 55lb : okay
dave : 12lb : krsho
Run Code Online (Sandbox Code Playgroud)
我要删除具有重复起始词的行,因此结果将如下所示:-
dave : 50lb : hlof
jimmy : 55lb : okay
Run Code Online (Sandbox Code Playgroud)
我一直在考虑使用,array_unique但没有用,所以任何想法如何做到..也许可以regex!
更新资料
我的尝试是
$lines = file('file.txt');
$lines = array_unique($lines);
file_put_contents('file.txt', implode($lines));
Run Code Online (Sandbox Code Playgroud)
但是没有用,因为它只比较整行,如果不一样的话会认为它不同
这应该为您工作:
(在这里,我先遍历$lineswith的每个元素,array_map()然后遍历每个explode()值,:并返回第一个元素。此后,我将使用array_intersect_key()之前创建的数组,在该数组中,我将array_unique()用于获取唯一键并与完整数组相交)
<?php
$lines = file("test.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$lines = array_intersect_key($lines, array_unique(array_map(function($v){
return trim(explode(":", $v)[0]);
}, $lines)));
print_r($lines);
?>
Run Code Online (Sandbox Code Playgroud)
输出:
Array ( [0] => dave : 50lb : hlof [1] => jimmy : 55lb : okay )
Run Code Online (Sandbox Code Playgroud)