使用子数组在php(或javascript)中读取Json文件

时间:2018-08-02 04:30:50

标签: javascript php json

这是我的json文件maps.json

[{
"type": "FeatureCollection",
"name": "maps",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": [
{ "type": "Feature", "properties": 
    { "IDLo": "1", "SoHieu": "1-1", "KyHieu": "C", "TenLo": "C1-1", "TenCty": "CMC Data Center"}, 
    "geometry": { "type": "Polygon", "coordinates": [ [ [ 106.791800519464871, 10.854928689692501 ], 
                                                        [ 106.792069337729856, 10.855930098557222 ], 
                                                        [ 106.792653322236532, 10.855766231881775 ], 
                                                        [ 106.79231961680415, 10.854783029941672 ], 
                                                        [ 106.791800519464871, 10.854928689692501 ] ] ] } },

{ "type": "Feature", "properties": 
    { "IDLo": "2", "SoHieu": "1-2", "KyHieu": "C", "TenLo": "C1-2", "TenCty": "ASCENDAS" }, 
    "geometry": { "type": "Polygon", "coordinates": [ [ [ 106.79264868743887, 10.855779887550094 ], 
                                                        [ 106.792064702932166, 10.855943754285464 ], 
                                                        [ 106.791786615071828, 10.854942345054598 ], 
                                                        [ 106.79101723865827, 10.855151730898562 ], 
                                                        [ 106.790461062937595, 10.855306494254153 ], 
                                                        [ 106.789969774384346, 10.855424842648457 ], 
                                                        [ 106.789478485831097, 10.855688850436046 ], 
                                                        [ 106.78819928167357, 10.857819111634392 ], 
                                                        [ 106.790915273109462, 10.859412245764197 ], 
                                                        [ 106.791907119811313, 10.857746282442497 ], 
                                                        [ 106.792111050908886, 10.857518691103408 ], 
                                                        [ 106.792379869173871, 10.857291099590915 ], 
                                                        [ 106.792583800271444, 10.856999782201919 ], 
                                                        [ 106.792732113796944, 10.856544598212894 ], 
                                                        [ 106.792741383392297, 10.856116724630859 ], 
                                                        [ 106.79264868743887, 10.855779887550094 ] ] ] } }

]}]

我不知道如何读到"TenCty": "CMC Data Center",以及如何用其他内容替换“ CMC数据中心”并将其保存在maps.json文件中。

当用户提交表单时,信息将保存在MySqli中,还保存在json文件中吗?可能吗?用javascript或PHP都可以。

此json文件是要在Leaflet中显示的地图信息,因此我必须另存为json。有什么建议吗?并预先感谢

1 个答案:

答案 0 :(得分:1)

您需要完成几个步骤。

首先获取json文件的内容:

$contents = file_get_contents('maps.json');

然后应用json_decode()并转换为数组:

$contents_decoded = json_decode($contents, true);

现在您可以获得"TenCty": "CMC Data Center"

echo $contents_decoded[0]['features'][0]['properties']['TenCty']; //CMC Data Center

您可以替换值:

$contents_decoded[0]['features'][0]['properties']['TenCty'] = 'something else';

现在您可以对新数组进行编码:

$contents = json_encode($contents_decoded);
echo $contents;
Output:
[{"type":"FeatureCollection","name":"maps","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}},"features":[{"type":"Feature","properties":{"IDLo":"1","SoHieu":"1-1","KyHieu":"C","TenLo":"C1-1","TenCty":"something else"},"geometry":{"type":"Polygon","coordinates":[[[106.79180051946487,10.854928689692501],[106.79206933772986,10.855930098557222],[106.79265332223653,10.855766231881775],[106.79231961680415,10.854783029941672],[106.79180051946487,10.854928689692501]]]}},{"type":"Feature","properties":{"IDLo":"2","SoHieu":"1-2","KyHieu":"C","TenLo":"C1-2","TenCty":"ASCENDAS"},"geometry":{"type":"Polygon","coordinates":[[[106.79264868743887,10.855779887550094],[106.79206470293217,10.855943754285464],[106.79178661507183,10.854942345054598],[106.79101723865827,10.855151730898562],[106.7904610629376,10.855306494254153],[106.78996977438435,10.855424842648457],[106.7894784858311,10.855688850436046],[106.78819928167357,10.857819111634392],[106.79091527310946,10.859412245764197],[106.79190711981131,10.857746282442497],[106.79211105090889,10.857518691103408],[106.79237986917387,10.857291099590915],[106.79258380027144,10.85699978220192],[106.79273211379694,10.856544598212894],[106.7927413833923,10.856116724630859],[106.79264868743887,10.855779887550094]]]}}]}]

最后一步是您可以将新内容放回到maps.json文件中:

file_put_contents('maps.json', $contents);