每次加载页面时都用PHP更新JSON文件

时间:2015-12-15 17:05:56

标签: php arrays json

我使用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);

看起来更新中的最后一项似乎被覆盖了,我怎么能摆脱它并获得更多更新项(每次重新加载页面时都有一个项目),谢谢你们

0 个答案:

没有答案