【PHP】jsonからランダムにオブジェクトを取り出し、別のjsonに保存する
取り出し元のjsonファイルを用意(以下data.json)
[ { "id": 1, "title": "タイトル1" }, { "id": 2, "title": "タイトル2" }, { "id": 3, "title": "タイトル3" }, . . .]
保存先のjsonファイルを用意(以下insert.json)
[]
それぞれのファイルを読み込ませる(以下全て同じphpファイルに記述)
//元データファイルの読み込み$file_path = dirname(__FILE__). '/data.json';$json_file = file_get_contents($file_path);$array = json_decode($json_file, true);
//書き込み用ファイルの読み込み$inst_file_path = dirname(__FILE__). '/insert.json';$inst_json_file = file_get_contents($inst_file_path);$inst_array = json_decode($inst_json_file, true);
以下、data.jsonの中身がなくなるまで、オブジェクトをランダムに抜き出してinsert.jsonに保存する。
オブジェクトを重複して保存しないよう、insert.jsonに保存後は、取り出したオブジェクトをdata.jsonから削除する。
//jsonファイルの処理if(!empty($array)) { //data.json中身がある場合 //data.jsonからランダムに取得 $random = array_rand($array, 1); //var_dump($array[$random]);
//insert.jsonに書き込み $inst_array[] = $array[$random]; $inst_json_encode = json_encode($inst_array, JSON_UNESCAPED_UNICODE); file_put_contents($inst_file_path, $inst_json_encode, LOCK_EX);
//ランダム取得したものをdata.jsonから削除する unset($array[$random]); $json_encode = json_encode($array, JSON_UNESCAPED_UNICODE); file_put_contents($file_path, $json_encode, LOCK_EX);
} else { //data.json中身がない場合 echo 'からっぽ!';}
insert.jsonに書き込む前にunset($array[$random]);
してしまうとエラーになるので(オブジェクトがなくなるのでinsert.jsonに保存できなくなる)、削除は必ず最後に行う。