如何在数组PHP中设置变量

时间:2014-12-08 15:21:19

标签: php arrays variables

我正在尝试阅读一个包含21个名字的文本文件;

123, bill, bobs
124, joe, public 

我已经能够将它们放入数组中,但我不知道如何将每个名称设置为变量,因为我需要根据它们的姓氏将它们按字母顺序排序。到目前为止,这是我的代码;

$file = fopen("students.txt", "r");
If ($file) {
    while (!feof($file)) {
        $array = explode("/n", fread($file, filesize("students.txt")));
        print_r($array);
    }
} else {
    echo 'File unopened';
}

我尝试过以下代码,但似乎没有用;

fscanf ($fp, "%s, %s, %s/n", $num, $first, $last). "<br/>";

2 个答案:

答案 0 :(得分:0)

只需将整个文件读入一个数组,然后展开每一行,然后将结果分开。

$array = file('your_file.txt');
if(false === $array) {
    // you had a problem reading file
    exit();
}

$exploded_array = array();
foreach($array as $csv) {
    $exploded_array[] = explode(',', $csv)
}

usort($exploded_array, function ($a, $b) {
    if ($a[2] == $b[2]) {
        return 0;
    }
    return ($a[2] < $b[2]) ? -1 : 1;
}

您还可以使用fgetscv()代替file()explode()的组合。无论哪种方式都差不多。

答案 1 :(得分:0)

您的文件相关代码过于复杂。

$users = file('students.txt', FILE_SKIP_EMPTY_LINES);

array_walk($users, function (&$val) {
    $newAr = explode(',', $val);
    $val = array_map('trim', $newAr);
});

usort($users, function($a, $b) {
    return strnatcmp($a[2], $b[2]);
});

var_dump($users);

Example with fake data @3v4l

另外,您可以使用fgetcsv从文件中获取值,因为@MarkB在您的问题的评论中指出了