按字母顺序对文件行数组进行排序


Sort array of file lines by alphabetical

我正在读取电子邮件地址的文本文件并仅输出域(带有@符号)。我需要按字母顺序排列列表,然后输出以显示在屏幕上

这是我到目前为止的代码:

<?php
    $file_handle = fopen("file.txt", "r");
    while (!feof($file_handle)) {
        $line = fgets($file_handle);
        $parts = explode("@", $line);
        $Id = $parts[count($parts) - 1];
        echo "@" . $Id . "<br>";
    }
    fclose($file_handle);
?>

如何启动排序以按列表字母顺序排列?

这应该适合您:

(在这里,我只是用file()获取文件的每一行。然后我用array_map()遍历每一行,我只将域返回到数组$lines中。最后,我用sort()对数组进行排序并打印出来)

<?php
    $lines = array_map(function($v){
        return "@" . explode("@", $v)[1];
    }, file("test.txt"));
    sort($lines);
    foreach($lines as $line)
        echo $line . "<br />";
?>

示例输入/输出:

a.b@x.com
a.c@a.de
e.s@b.cu

@a.de 
@b.cu
@x.com