我有一个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));
答案 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));