Php 如何将整个信息数组写入文件?
脚本输出一个列表,并且必须将整个列表写入一个文件。为什么脚本只将最后一行写入.txt文件,而不写入整个列表?如何修复脚本以将整个列表写入.txt文件Php 如何将整个信息数组写入文件?,php,Php,脚本输出一个列表,并且必须将整个列表写入一个文件。为什么脚本只将最后一行写入.txt文件,而不写入整个列表?如何修复脚本以将整个列表写入.txt文件 $dir = "./radio/radio_stantion/"; $name = scandir($dir); for($i=2; $i<=(sizeof($name)-1); $i++) { $fopen=file( $dir.$name[$i] ); $line = $fopen[3];
$dir = "./radio/radio_stantion/";
$name = scandir($dir);
for($i=2; $i<=(sizeof($name)-1); $i++) {
$fopen=file( $dir.$name[$i] );
$line = $fopen[3];
$url = $fopen[2];
$radio_name = explode(") ", $line);
$radio_url = explode("//", $url);
$link = $radio_url[1];
$http = explode(":", $link);
$fff = $http[1];
$port = explode("/", $fff);
$zzz = $radio_name[1];
$finalname = preg_replace ("/[^a-zа-я\s]/si","",$zzz);
$sss = $finalname."-".$http[0]."-".$port[0];
--------------------------
A list is displayed:
FRESH FM IBADAN s4.voscast.com 8442
Bestfriend FM 178.32.62.172 8217
COOLfahrenheit 111.223.51.7 8005
RThess 37.59.32.115 6156
SmoothJazzcom 149.56.155.209 80
--------------------------
$f = fopen("../top_100/radio_top_100_v2.txt", "w");
fwrite($f, $sss);
fclose($f);
}
$dir=“./radio/radio_station/”;
$name=scandir($dir);
对于($i=2;$i我几乎不知道那里发生了什么,但问题是在每次循环迭代中,您都是以写模式打开文件的
使用fopen
和w
模式清除文件并写入:
“w”仅用于写入;将文件指针放在
并将该文件截断为零长度。如果该文件没有
存在,尝试创建它
您应该fopen
循环前的文件。fwrite
每次迭代。而fclose
循环后
$f = fopen("../top_100/radio_top_100_v2.txt", "w");
for($i=2; $i<=(sizeof($name)-1); $i++) {
...
fwrite($f, $sss);
...
}
fclose($f);
$f=fopen(“../top\u 100/radio\u top\u 100\u v2.txt”,“w”);
对于($i=2;$i我认为您在每次迭代中都会覆盖以前的写入操作。请尝试先将所有内容写入字符串变量(并在每行追加一个\n
),然后将字符串内容一次性写入文件。如果处理大量数据,则每次迭代都使用fwrite
,这样就不会消耗太多内存
文件IO非常昂贵,因此只需打开文件一次,然后写入一次,就可以提高性能。试试fopen(“../top\u 100/radio\u top\u 100\u v2.txt”,“a”);您正在覆盖上一行。您的代码不完整。@JazzCat您是对的。将整个信息数组记录在一个文件中。@Sergey_777这是一个相当懒惰的修复程序。不,尽管如此,并非如此。脚本完全写入列表,但下次添加新列表时,文本文件中的列表会增加。因此,它不是。