我使用API进行数据可视化网站,我决定使用PHP将动态数据存储到JSON文件中,我不想使用SQL的东西,因为我对它们感到不舒服。在每个文件中,我将动态数据存储到更新数组中,每个json文件看起来都是这样的:
{
"number": 9113,
"name": "09113 - BLEUE",
"address": "5 RUE BLEUE - 75009 PARIS",
"position": {
"lat": 48.875821855031,
"lng": 2.3473032303025
},
"banking": true,
"bonus": false,
"status": "OPEN",
"contract_name": "Paris",
"bike_stands": 30,
"update": [{
"available_bike_stands": 10,
"available_bikes": 20,
"last_update": 1450192005000
}, {
"available_bike_stands": 8,
"available_bikes": 22,
"last_update": 1450197909000
}]
}
正如您所看到的,此JSON文件中有2个更新,但我无法添加超过2个(似乎每次启动PHP文件时都会覆盖最后一个。
这是我的php文件,其中包含一个创建json文件的函数和另一个更新的文件。这是:
update_data();
function create_data(){
if(!is_dir('data')){
mkdir('data');
}
$json_decaux = json_decode( file_get_contents("json_decaux.json") );
foreach($json_decaux as $key=>$station){
// echo $station->name."\n";
$station->update = array();
$temp = new stdClass();
$temp->available_bike_stands = $station->available_bike_stands;
$temp->available_bikes = $station->available_bikes;
$temp->last_update = $station->last_update;
$station->update[] = $temp;
unset($station->available_bike_stands);
unset($station->available_bikes);
unset($station->last_update);
file_put_contents("data/".$station->number.".json", json_encode($station) ) ;
}
}
function update_data(){
$json_decaux = json_decode( file_get_contents("https://api.jcdecaux.com/vls/v1/stations?contract=paris&apiKey=7448c0de3a2d843e819733fe9acc50586e8d3646") );
foreach($json_decaux as $key=>$station){
$station_json = json_decode( file_get_contents("data/".$station->number.".json"));
$temp = new stdClass();
$temp->available_bike_stands = $station->available_bike_stands;
$temp->available_bikes = $station->available_bikes;
$temp->last_update = $station->last_update;
$station_json->update[] = $temp;
file_put_contents("data/".$station->number.".json", json_encode($station_json) ) ;
我也尝试使用数组代替
$station_json->update[] = $temp;
with:
array_push($station_json->update, $temp);
看起来更新中的最后一项似乎被覆盖了,我怎么能摆脱它并获得更多更新项(每次重新加载页面时都有一个项目),谢谢你们