我有一个包含这样的数据的文件:
randomString-data1
randomString-data2
randomString-data4
randomString-data2
randomString-data2
randomString-data3
randomString-data4
我想要的输出:
randomString-data1
randomString-data2
randomString-data4
randomString-data3
随机字符串的长度在20至25个字符之间。随机串并不重要。仅相关的数据。删除此类重复项的最佳方法是什么?
我所能想到的只是爆炸" - "每行爆炸的蛮力方式。但是有更好的方法吗?
注意:随机字符串很重要。但是,如果有重复条目中的任何一个随机弦仍然保留。
爆炸和数组翻转,然后获取数组键
$content_array = explode($file_contents);
//Remove duplicate entries
$flipped_array = array_flip($content_array);
file_put_contents('/path/to/file', implode("n", array_keys($flipped_array));
首先通过' n'爆炸,然后' - '
$arr = explode('n', $str);
$data = array();
foreach($arr as $val)
{
$temp = explode("-", $val);
$data[$temp[1]] = $temp[0];
}
$str = "";
foreach($data as $k => $v)
{
$str .= $v . "-" . $k;
}
我会这样做
<?php
$file = <<<EOF
randomString-data1
randomString-data2
randomString-data4
randomString-data2
randomString-data2
randomString-data3
randomString-data4
EOF;
$found = [];
foreach (explode("n", $file) as $line) {
list(, $date) = explode('-', $line);
if (!isset($found[$date])) {
echo "$line<br>";
$found[$date] = true;
}
}
?>