2

我现在用谷歌搜索了一下,但找不到任何适合我的东西。

我有一个文本文件,其中包含:用户名;名字;姓氏;类代码\n

我使用这个while循环来获取内容:

$handle = fopen("studen.txt", "r");

while(!feof($handle)) {

$linje = fgets($handle);

$larray = explode(";",$linje);

$klassekode = trim($larray[3]);

}

$larray[3] 是我在这里唯一感兴趣的东西。我想从中制作一个html列表,所以我使用了:

echo "<option value=\"$klassekode\">$klassekode</option>";

我现在的问题是我似乎找不到删除重复条目的方法。现在有3个“IS1”,4个“IS3”等等。我怀疑有一个简单的解决方案,我根本无法弄清楚:-|

提前致谢!

4

3 回答 3

1

无需太多代码修改的快速方法是保留您已经看到的每个值的第二个数组,如果当前值存在于其中,则跳过它:

$seenValues = array();

$handle = fopen("studen.txt", "r");
while(!feof($handle)) {
    $linje = fgets($handle);
    $larray = explode(";",$linje);
    $klassekode = trim($larray[3]);

    if (in_array($klassekode, $seenValues)) continue; // skip it
    $seenValues[] = $klassekode;
    // do your other stuff
}

使用与上述相同但更有效的方法是使用该$klassekode值作为$seenValues数组中的索引并使用 PHPisset()代替。它比使用该方法要快得多in_array()所以如果这些条目很多并且速度很重要,请尝试以下方法:

...
if (isset($seenValues[$klassekode])) continue; // skip it
$seenValues[$klassekode] = true;
...
于 2012-10-03T14:32:59.613 回答
0

您可以使用array_unique删除重复file文件并将文件读入数组

$content = array_unique(file("studen.txt"));
foreach ( $content as $var ) {
    list($userame, $klassekode, $klassekode) = explode(";", $var);
    printf("<option value=\"%s\">%s</option>", $klassekode, $klassekode);
}
于 2012-10-03T14:31:57.653 回答
0

由于 classcode 是该行中的第三个字段,因此它$larray[2]$larray[3].

除了重复数据删除,您可以使用另一个数组。PHP 中的数组可以像散列或集合一样起作用。每次你爆炸并得到一个新的类代码时,你把它放在一个数组中,最后你只需使用这个数组中的元素作为你的类代码。

于 2012-10-03T14:32:38.197 回答