Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将整个信息数组写入文件?_Php - Fatal编程技术网

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

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];

脚本输出一个列表,并且必须将整个列表写入一个文件。为什么脚本只将最后一行写入.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);
}
$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这是一个相当懒惰的修复程序。不,尽管如此,并非如此。脚本完全写入列表,但下次添加新列表时,文本文件中的列表会增加。因此,它不是。