0

我正在从数组中提取数据,目的是将其写入文件以供以后使用。

提取工作正常, print_r 语句的结果为我提供了所需的数据。但是,输出到文件的数据只会让我得到提取数据的最后一个值。

我错过了什么?我尝试过爆炸,将 print_r 的结果保存到字符串中,尝试输出缓冲 start_ob() 都没有结果。

    $url = "http://api.discogs.com/users/xxxxxx/collection/folders/0/releases?per_page=100&page=1";
    $json = json_decode(file_get_contents($url));


//  Scan through outer loop
    foreach ($json as $inner) {

// scan through inner loop
      foreach ($inner as $value) {
//get thumb url
         $thumb = $value->basic_information->thumb;
//Remove -150 from thumb url to gain full image url
          $image =  str_replace("-150","",($thumb));

// Write it to file
     file_put_contents("file.txt",$image);
     print_r($image);

    }
    }
4

2 回答 2

0

您使用最后提取的数据一遍又一遍地重写文件。所以你需要将数据附加到图像变量,最后你需要把它放在磁盘上。

  $url = "http://api.discogs.com/users/xxxxxx/collection/folders/0/releases?per_page=100&page=1";
    $json = json_decode(file_get_contents($url));


//  Scan through outer loop
    foreach ($json as $inner) {

// scan through inner loop
      foreach ($inner as $value) {
//get thumb url
         $thumb = $value->basic_information->thumb;         
//Remove -150 from thumb url to gain full image url 
// and append it to image
          $image .=  str_replace("-150","",($thumb));  
// you can add ."\n" to add new line, like:
//$image .=  str_replace("-150","",($thumb))."\n";  
// Write it to file    

    }
    }

     file_put_contents("file.txt",$image);
     print_r($image);
于 2013-02-13T12:16:02.787 回答
0

file_put_contents()手册

http://www.php.net/manual/en/function.file-put-contents.php

该函数与调用 相同fopen()fwrite()依次fclose()将数据写入文件。

如果文件名不存在,则创建文件。否则,现有文件将被覆盖,除非FILE_APPEND设置了标志。

因此,您可以在现有代码中使用标志FILE_APPEND来停止每次写入时重写文件,或者像以前的评论者所说的那样累积字符串并写入一次(他们的方式更快更好)

于 2013-02-13T12:19:57.367 回答