PHP从文件读入数组并删除重复项(循环)
我现在在谷歌上搜索了一下,但找不到适合我的东西 我有一个文本文件,其中包含: 用户名;名字;姓氏;类代码\n 我使用这个while循环来获取内容:PHP从文件读入数组并删除重复项(循环),php,arrays,while-loop,duplicates,text-files,Php,Arrays,While Loop,Duplicates,Text Files,我现在在谷歌上搜索了一下,但找不到适合我的东西 我有一个文本文件,其中包含: 用户名;名字;姓氏;类代码\n 我使用这个while循环来获取内容: $handle = fopen("studen.txt", "r"); while(!feof($handle)) { $linje = fgets($handle); $larray = explode(";",$linje); $klassekode = trim($larray[3]); } $larray[3]是我唯一感兴趣的东西
$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>";
echo“$klassekode”;
我现在的问题是,我似乎找不到删除重复条目的方法。现在有3个“IS1”,4个“IS3”等等。我怀疑有一个简单的解决办法,我就是想不出来:-|
提前谢谢 您可以使用
array\u unique
删除重复文件,并使用文件
将文件读入数组
$content = array_unique(file("studen.txt"));
foreach ( $content as $var ) {
list($userame, $klassekode, $klassekode) = explode(";", $var);
printf("<option value=\"%s\">%s</option>", $klassekode, $klassekode);
}
$content=array_unique(文件(“studen.txt”);
foreach($var形式的内容){
列表($userame,$klassekode,$klassekode)=分解(“;”,$var);
printf(“%s”,$klassekode,$klassekode);
}
由于classcode是行中的第三个字段,因此它在$larray[2]
中可用,而在$larray[3]
中不可用
除重复数据消除外,还可以使用另一个阵列。PHP中的数组可以像散列或集合一样工作。每次分解并获得新的类代码时,您都会将其放入一个数组中,最后您只需使用此数组中的元素作为类代码。一个快速的方法是,在不进行太多代码修改的情况下,保留已看到的每个值的第二个数组,如果其中存在当前值,则跳过它:
$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
数组中的索引,并使用PHP的isset()
。它比使用in_array()
方法要快得多,因此,如果这些条目很多且速度很重要,请尝试以下方法:
...
if (isset($seenValues[$klassekode])) continue; // skip it
$seenValues[$klassekode] = true;
...
或者如果(!in_数组($klassekode,$seenValues))$seenValues[]=$klassekode;太好了-D的工作原理就像一个charmAs,你的类代码不是在
$larray[2]
中吗,因为explode()
的结果将是零基的吗?对不起,它是用户名;名字;姓氏;类代码。因此,$larray[3]等于exis1