2011-07-19 7 views
2

JSON構造に新しいデータを追加するにはどうすればよいですか?ここでphp jsonツリーに新しいデータを追加

はJSONはjson.txtである:

[ 
{"name":"foo","number":"1"}, 
{"name":"bar","number":"2"}, 
{"name":"Hello","number":"3"} 
] 

今、私は$newNumber =文を置き換える、新しい行にPHP < 5.3では{"name":"good day","number":"**"}

$file = 'json.txt'; 
$data = json_decode(file_get_contents($file)); 
$newdata = array('name'=>'good day', 'number' => '**');// how to add `number` automatic `+1`, make it to `4` with php code? 
$data[] = $newdata; 
file_put_contents($file, json_encode($data)); 
+0

あなたのコードは正常に表示されますが、出力としてはどうなりますか? –

+0

4は配列の4番目のエントリになるか、または最大番号(3)+ 1ですか? – Yoshi

+0

@ Yoshi、この 'txt'でさらにデータを追加すれば、numberを自動的に増やす方法は? –

答えて

2
$file = 'json.txt'; 
$data = json_decode(file_get_contents($file)); 
$newNumber = max(array_map(
    function($e) {return intval($e['number']);}, 
$data)) + 1; 
$newdata = array('name'=>'good day', 'number' => strval($newNumber)); 
$data[] = $newdata; 
file_put_contents($file, json_encode($data)); 

を追加したい:

$newNumber = max(array_map(
    create_function('$e', 'return intval($e["number"]);'), 
$data)) + 1; 
+0

構文エラー:予期しないT_FUNCTION、予期しない構文エラー ')4行目 –

+0

@fish man古いPHPバージョンでテストしていると仮定しています。 php <5.3でも動作するはずのコードで答えを更新しました。 – phihag

+0

はい、5.3より低く、今更新してテストします。ありがとう。 –

1

例では、数値は連続しています。なぜ使用しないでくださいend番号を自動増加させるのですか?

<?php 
$file = 'json.txt'; 
$data = json_decode(file_get_contents($file)); 
$number = (end($data)->number) + 1; 
$newdata = array('name'=>'good day', 'number' => ''.$number.''); // how to add `number` automatic `+1`, make it to `4` with php code? 
$data[] = $newdata; 
file_put_contents($file, json_encode($data)); 
?> 
関連する問題