使用姓氏对文本文件进行排序

时间:2014-10-23 16:32:24

标签: php

我有一个php小脚本,使用第一个名称对文本文件中的数据进行排序,但我需要按姓氏排序,文本文件看起来像这样

name1,last1,email1
name2,last2,email2
name3,last3,email3

如何使用姓氏对文本文件进行排序?

$data = file($file_path);
natsort($data);
file_put_contents($new_file_path, implode("\n", $data));

2 个答案:

答案 0 :(得分:2)

抓住第二列,将其放入数组并对其进行排序。然后使用新排序的数组中的键构建结果并将其保存到新文件中。

$rows = array();
$result = '';
$data = file($data_path);

foreach($data as $key => $val) {
    $rowarray = explode(",", $val);
    $rows[] = $rowarray[1];
}

asort($rows);

foreach($rows as $key => $val) {
    $result .= trim($data[$key]) . "\r\n";
}

file_put_contents($new_file_path, $resultstring);

答案 1 :(得分:0)

如果您只想对一个字段进行排序,则需要拆分','并使用usort

$data = file($file_path);
usort($data, function($a, $b){
    $a = explode(',', $a);
    $b = explode(',', $b);

    return strnatcmp($a[1], $b[1]);
});
file_put_contents($new_file_path, implode("\n", $data));