You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP移除文本文件重复行时array_unique数组索引从0开始问题求助

文本去重及索引调整实现方案

现有代码问题说明

  • 语法报错原因:你将hott.txt的文本内容直接写在了PHP代码块的起始标签后,这部分内容会被PHP解析器当成代码执行,直接触发语法错误,文本内容需单独存储在hott.txt文件中,不要写入PHP代码段。
  • 索引问题:array_unique去重后会保留原数组的键值关联,文件读取的行默认从0开始索引,即使常规重置索引默认也是从0起始,只需在去重后手动重构键名即可实现从1开始的索引需求。

正确实现代码

先确认hott.txt独立存储以下内容,和PHP脚本放在同一目录:

vnea@yahoo.com
vnea@yahoo.com
dabrd@gmail.com
vnea@yahoo.com
dabrd@gmail.com
bread@gmail.com
bread@gmail.com
vnea@yahoo.com
dabrd@gmail.com
bread@gmail.com
syeas@hotmail.com
vnea@yahoo.com
vnea@yahoo.com

PHP实现代码:

<?php
// 读取文件,自动跳过空行、移除每行末尾换行符
$lines = file("hott.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
// 清理每行首尾空白字符,避免不可见字符导致去重失效
$lines = array_map('trim', $lines);
// 移除重复行
$uniqueLines = array_unique($lines);
// 重构数组索引,从1开始计数
$uniqueLines = array_combine(
    range(1, count($uniqueLines)),
    array_values($uniqueLines)
);

// 输出验证结果
print_r($uniqueLines);
?>

运行结果

执行代码后将得到索引从1开始的去重数组,输出如下:

Array
(
    [1] => vnea@yahoo.com
    [2] => dabrd@gmail.com
    [3] => bread@gmail.com
    [4] => syeas@hotmail.com
)

补充说明

如果你需要保留每个邮箱的出现次数统计,只需要在你原有计数逻辑的基础上,取出数组所有键名(即去重后的邮箱),再用上面的array_combine方法重构从1开始的索引即可,核心去重逻辑不需要改动。

内容的提问来源于stack exchange,提问作者Diana Studebaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:24:22