如何使用php按每行中的第二个索引对文本文件进行排序

时间:2016-04-24 16:29:50

标签: php arrays file sorting text

嘿伙计们,我目前有一个看起来像这样的文本文件

加利福尼亚州洛杉矶 西雅图,华盛顿 底特律,密歇根州

城市和州以逗号分隔。我知道如何按城市排序文本文件,但我不知道如何按州对文本文件进行排序。

有什么建议吗?

我试过这个

<?php 
    $file = file("states.txt"); 
    sort($file); 
    for($i=0; $i<count($file); $i++) { 
        $states = explode(",", $file[$i]); 
        echo $states[0], $states[1],"<br />"; 
    }
?>

1 个答案:

答案 0 :(得分:1)

我们假设您的文字文件名为file。这是使用usortstrposstrcmp和{{ 1}}功能:

$cities = file("cities.txt");   // reading file contents as array of strings(lines)

usort($cities, function($a, $b){  // sorting by the first character of the state name
    return strcmp($a[(strpos($a, ",") + 2)], $b[(strpos($b, ",") + 2)]);
});

//file_put_contents("cities.txt", implode("", $cities));  // for saving sorted file contents

print_r($cities);

输出(作为数组):

Array
(
    [0] => Los Angeles, California

    [1] => Detroit, Michigan

    [2] => Seattle, Washington

)