0

後で使用するためにファイルに書き込むことを目的として、配列からデータを抽出しています。

抽出は正常に機能します。print_rステートメントの結果から、必要なデータが得られます。ただし、ファイルに出力されたデータは、抽出されたデータの最後の値しか取得しません。

私は何が欠けていますか?explodeを試し、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()

filename が存在しない場合、ファイルが作成されます。FILE_APPENDそれ以外の場合、フラグが設定されていない限り、既存のファイルは上書きされます。

したがって、既存のコードでフラグを使用FILE_APPENDして、書き込みごとにファイルの書き換えを停止するか、文字列を蓄積して、前のコメンターが言ったように一度書き込むことができます(彼らの方法はより速く、より良いです)

于 2013-02-13T12:19:57.367 に答える