使用PHP在文本文件中显示相同的单词
我的文本文件如下:使用PHP在文本文件中显示相同的单词,php,arrays,file,text-files,Php,Arrays,File,Text Files,我的文本文件如下: lebuzzdesbonsplans.com 26608 24798 friendcorp.fr 11343 9856 9283 messengear.fr 9090 8107 text.txt lebuzzdesbonsplans.com;hotmail.com;26608;828;3.11 lebuzzdesbonsplans.com;hotmail.fr;24798;876;3.53 friendcorp.fr;yahoo.fr;11343;0;0 friendco
lebuzzdesbonsplans.com
26608
24798
friendcorp.fr
11343
9856
9283
messengear.fr
9090
8107
text.txt
lebuzzdesbonsplans.com;hotmail.com;26608;828;3.11
lebuzzdesbonsplans.com;hotmail.fr;24798;876;3.53
friendcorp.fr;yahoo.fr;11343;0;0
friendcorp.fr;free.fr;9856;12;.12
friendcorp.fr;wanadoo.fr;9283;1;.01
messengear.fr;free.fr;9090;11;.12
messengear.fr;laposte.net;8107;2;.02
....................................
....................................
PHP代码:
<?php
$PMTA_FILE = file_get_contents("text.txt");
$lineFromText = explode("\n", $PMTA_FILE);
$title = "";
$domain = "";
foreach($lineFromText as $line){
$data = explode(";",$line);
$domain = $data[0];
if (array_key_exists($domain, $domains_seen)){
continue;
}
$domains_seen[$domain] = true;
echo $domain;
echo "<br>";
echo $data[2];
echo "<br>";
}
?>
我不想要上面的结果,我需要下面的结果:
lebuzzdesbonsplans.com
26608
24798
friendcorp.fr
11343
9856
9283
messengear.fr
9090
8107
任何知道的人请帮我找到解决方案,谢谢。natsort($lineFromText);
natsort($lineFromText);
foreach($lineFromText as $line){
$data = explode(";",$line);
$domain = $data[0];
if (!array_key_exists($domain, $domains_seen)){
echo $domain;
echo "<br>";
}
echo $data[2];
echo "<br>";
$domains_seen[$domain] = true;
}
foreach($lineFromText作为$line){
$data=分解(“;”,$line);
$domain=$data[0];
如果(!array_key_存在($domain,$domains_seen)){
echo$域;
回声“
”;
}
echo$数据[2];
回声“
”;
$domains_seen[$domain]=true;
}
更新:首先对行进行排序-这样所有域都将收集在一起,natsort($lineFromText);
foreach($lineFromText作为$line){
$data=分解(“;”,$line);
$domain=$data[0];
如果(!array_key_存在($domain,$domains_seen)){
echo$域;
回声“
”;
}
echo$数据[2];
回声“
”;
$domains_seen[$domain]=true;
}
更新:首先对行进行排序-这样所有域都将收集在一起,您可以使用
$lines = array_reduce(file("text.txt", FILE_IGNORE_NEW_LINES), function ($a, $b) {
$b = str_getcsv($b, ";");
$a[$b[0]][] = $b[2];
return $a;
});
foreach($lines as $k => $values)
{
echo $k,PHP_EOL;
echo implode(PHP_EOL, $values);
echo PHP_EOL;
}
输出
lebuzzdesbonsplans.com
26608
24798
friendcorp.fr
11343
9856
9283
messengear.fr
9090
8107
你可以用
$lines = array_reduce(file("text.txt", FILE_IGNORE_NEW_LINES), function ($a, $b) {
$b = str_getcsv($b, ";");
$a[$b[0]][] = $b[2];
return $a;
});
foreach($lines as $k => $values)
{
echo $k,PHP_EOL;
echo implode(PHP_EOL, $values);
echo PHP_EOL;
}
输出
lebuzzdesbonsplans.com
26608
24798
friendcorp.fr
11343
9856
9283
messengear.fr
9090
8107
感谢上面的文件文本,但如果我像这样修改文件中的句子:
lebuzzdesbonsplans.com;hotmail.com;26608;828;3.11 friendcorp.fr;yahoo.fr;11343;0;0 lebuzzdesbonsplans.com;hotmail.fr;24798;876;3.53 friendcorp.fr;free.fr;9856;12;.12 Messenger.fr;free.fr;9090;11;.12 friendcorp.fr;wanadoo.fr;9283;1.01 messenger.fr;laposte.net;8107;2.02
它不起作用。请帮助我。感谢上面的文件文本,但如果我像这样更改文件中的句子:lebuzzdesbonsplans.com;hotmail.com;26608;828;3.11 friendcorp.fr;yahoo.fr;11343;0;0 lebuzzdesbonsplans.com;hotmail.fr;24798;876;3.53 friendcorp.fr;free.fr;9856;12;.12 Messenger.fr;free.fr;9090;11;.12 friendcorp.fr;wanadoo.fr;9283;1.01 messenger.fr;laposte.net;8107;2.02
它不起作用。请帮助我。谢谢你的回答,但我可以问你一些代码吗?我想得到$b[2]
和$b[3]
之间的减法,我声明$total
并且我做$total=$b[2]-$b[3]
我如何回显函数旁边的变量$total
??请帮我添加$a[$b[0]['total']=$b[2];-$b[3]
那么我应该如何在foreach中显示它呢?谢谢你的回答,但我可以问你一些代码吗?我想得到$b[2]
和$b[3]
之间的减法,我声明$total
并且我做$total=$b[2]-$b[3]
我如何回显函数旁边的变量$total
??请帮我添加$a[$b[0]['total']=$b[2];-$b[3]
那么我如何在foreach中显示它呢?