2016-06-18 12 views
3

これは私が理解したコードです。PHPを使用してJSONデータをファイルに記録するにはどうすればよいですか?

<?php 
$username = $_POST['username']; 
$email = $_POST['email']; 
$json = '{"username":"'.$username.'",'.'"email":"'.$email.'"}'; 
$file = fopen('token_data.json','w+'); 
fwrite($file, $json); 
fclose($file); 
?> 

これは絶対に正しい方法ではありません。

+0

1)データを配列に入れ、JSONにエンコードするために 'json_encode()'を使います。2)stuffを追加するときは、ファイルの内容を取り出し、デコードして配列を追加してからエンコードしますもう一度それを保存する前に。 – Rizier123

+0

あなたはどう思いますか?どのように改善しますか?ヒント:['json_encode'](http://php.net/manual/de/function.json-encode.php) – Timo

+0

あなたはどんなエラーが出ていますか? –

答えて

1

さて、私はこれを行うより効率的な方法を見つけました。

Original Answer

// read the file if present 
$handle = @fopen($filename, 'r+'); 

// create the file if needed 
if ($handle === null) 
{ 
    $handle = fopen($filename, 'w+'); 
} 

if ($handle) 
{ 
    // seek to the end 
    fseek($handle, 0, SEEK_END); 

    // are we at the end of is the file empty 
    if (ftell($handle) > 0) 
    { 
     // move back a byte 
     fseek($handle, -1, SEEK_END); 

     // add the trailing comma 
     fwrite($handle, ',', 1); 

     // add the new json string 
     fwrite($handle, json_encode($event) . ']'); 
    } 
    else 
    { 
     // write the first event inside an array 
     fwrite($handle, json_encode(array($event))); 
    } 

     // close the handle on the file 
     fclose($handle); 
} 

アレイに全体JSONファイルを復号することなく。

3

あなた$_POST配列は、あなたがJSONとしてエンコードしてファイルに書き込むことができます必要なすべてのデータを持っている場合:

<?php 

    $json = json_encode($_POST); 
    $file = fopen('token_data.json','w+'); 
    fwrite($file, $json); 
    fclose($file); 
?> 

あなたがファイルに追加したい場合は、にファイルを読み込む必要があります最初に配列の新しい部分を追加して、をもう一度エンコードしてから、私の友人@ Rizier123と同じようにファイルに書き戻します。

+0

ありがとうございますが、どうすればデータを追加できますか? – skygate

+0

ちょうど@ Rizier123と私はそれを記述しました。あなたにコードを書いてもらいたいですか? –

+0

それを書いてください、私は非常に配列にファイルを読むことを理解していません... – skygate

関連する問題