如何将整个信息数组写入文件?

时间:2017-05-31 19:14:52

标签: 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];
    $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);
}

2 个答案:

答案 0 :(得分:1)

我几乎不了解那里发生了什么,但问题是你在每次循环迭代时都是以写模式打开文件。

使用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);

答案 1 :(得分:0)

我认为你在每次迭代中都会覆盖以前的写入。尝试首先将所有内容写入字符串变量(并在每行附加\n),然后将字符串内容一次写入文件。如果您正在处理大量数据,那么每次迭代都使用fwrite是有意义的,所以不要消耗太多内存。

文件IO很昂贵,所以只打开文件一次,写一次,也应该提高性能。